美文网首页
MySQL基本信息(1)

MySQL基本信息(1)

作者: wangfs | 来源:发表于2017-08-23 21:12 被阅读7次

    MySQL被设计为一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Linux、Solaris、FreeBSD、Mac和Windows。尽管各种系统在底层(如线程)实现方面各有不同,但是MySQL几乎能保证在各平台上的物理体系结构的一致性。所以,你应该能很好地理解MySQL在所有这些平台上是如何工作的。

    1.1 定义数据库和实例

    在数据库领域中有两个词很容易混淆,它们就是“实例”(instance)和“数据库”(database)。作为常见的数据库术语,这两个词的定义如下。

    数据库: 物理操作系统文件或其他形式文件类型的集合。在MySQL 中,数据库文件可以是frm、myd、myi、ibd结尾的文件。当使用NDB 引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但是定义仍然不变。

    数据库实例: 由数据库后台进程/ 线程以及一个共享内存区组成。共享内存可以被运行的后台进程/ 线程所共享。需要牢记的是,数据库实例才是真正用来操作数据库文件的。
    这两个词有时可以互换使用,但两者的概念完全不同。在MySQL 中,实例和数据库的通常关系是一一对应,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库可被多个实例使用的情况。MySQL被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle 多进程的架构有所不同(Oracle 的Windows版本也是单进程多线程的架构)。这也就是说,MySQL数据库实例在系统上的表现就是一个进程。

    1.2数据库配置及设置的简单认识

    MySQL数据库的配置文件是集中式配置,能够为mysql的各应用程序提供配置信息,大致分为如下几类。

    [mysqld]
    [mysqld_safe]
    [server]
    [mysql]
    [mysqldump]
    [client]
    

    配置文件的查找路径位:

    /etc/my.cnf-->/etc/mysql/my.cnf-->/$MYSQL_HOME/my.cnf-->--default-extra-file=/path/to/somedir/my.cnf --> ~/.my.cnf
    

    越往后的配置文件里面的相同参数会覆盖前面的配置文件参数。

    获取运行中的mysql进程使用各服务器参数及其值:

    mysql> SHOW GLOBAL VARIABLES; #全局参数
    mysql> SHOW [SESSION] VARIABLES; #当前会话的参数
    

    注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效;
    有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置;
    修改服务器变量的值:

    mysql> help SET #很重要的一个命令
    

    全局:

    mysql> SET GLOBAL system_var_name=value;
    mysql> SET @@global.system_var_name=value;
    

    会话:

    mysql> SET [SESSION] system_var_name=value;
    mysql> SET @@[session.]system_var_name=value;
    

    状态变量:用于保存mysqld运行中的统计数据的变量;

    mysql> SHOW GLOBAL STATUS;
    mysql> SHOW [SESSION] STATUS;
    
    最后我们再来看下MySQL的架构原理图
    mysql01.png

    上面的架构图大概的描述下:

    1. 用户连入mysql时首先连接管理器负责分配给其一个线程
    2. 然后线程管理器负责管理此线程
    3. 用户模块验证用户是否合法有权限运行sql语句
    4. 命令派发器决定sql语句怎样执行
    5. 如果在查询缓存(query_cache,k、v结构,k:sql查询语句v:sql语句查
      询值)中有当前需要执行的语句,则命中,直接从缓存中取数据

    6.如果缓存中没有当前要执行的语句则将sql语句送给分析器
    7.分析器分析sql语句后决定发送给下面的哪个模块执行
    8.相应的模块最后再交给访问控制模块查看其是否有权限
    9.如果有权限则交给表管理器
    10.然后转化为对存储引擎的调用
    11.最后的执行操作则由存储引擎来实施
    12.执行结束后返回数据,并记录相关日志

    相关文章

      网友评论

          本文标题:MySQL基本信息(1)

          本文链接:https://www.haomeiwen.com/subject/izmjdxtx.html