MySQL体系结构(一)

1. 数据库

数据库(数据库文件)是一个或者一组二进制文件,通常来说存在与文件系统之上。

2. 数据库实例

由数据库后台进程/线程以及一个共享区域组成(程序的概念),数据库实例是用来操作数据库文件的

注意:MySQL中,数据库实例和数据库是一一对应的。没有Oracle的一对多(RAC)的机制。

3. MySQL体系结构

  1. 单进程多线程结构

    • 不会影响MySQL的性能,看程序如何写。(多进程程序,进程间通信开销大于多线程)
  2. 存储引擎的概念

    • 可以理解成文件系统,例如FAT32, NTFS, EXT4。 一个表是一个分区,引擎就是分区的文件系统
    • 存储引擎的对象就是表
    • show tables; 可以看到每个表对应的是上面引擎(Engine)
    • 除了特殊情况,我们现在就只考虑INNODB
  3. 体系结构图
    在这里插入图片描述

4. 逻辑存储结构

MySQL逻辑存储结构
instance
database
schema
table
view
  • 一个DB对应一个schema
  • 一个DB对应一个文件夹
  • 一个表对应一组文件
                                                 |--> table1 --- | view1 |
MySQL Instance -----> Database ----> Schema ---> |--> table2 --- | view2 |
                                                 |--> table3 --- | View3 |

注意:
MySQL中一个Database对应一个Schema,之所以要有这个schema, 是为了兼容其他数据库
information_schema数据库不是文件夹,存在于内存中,在启动时创建

5. MySQL物理存储结构

  1. MySQL配置文件
  • datadir
    - 存储数据二进制文件的路径
  1. 表结构的组成

    • frm:表结构定义文件

    • MYI:索引文件

    • MYD:数据文件

    • 可以用hexdump -c XXX.frm查看二进制文件(意义不大)

    • show create table tablename;

    • mysqlfrm (utilities工具包)

      shell> mysqlfrm --diagnostic /data/mysql_data/aaa/.a.frm  #可将frm文件转成create table的语句
      
  2. 错误日志文件

  • log_err
    - 建议配置成统一的名字
  • 方便定位错误
  1. 慢查询日志文件
  • 将运行超过某一个时间(yu四声)的SQL语句记录到文件
    - MySQL < 5.1 :以秒为单位
    - MySQL >= 5.1 : 以毫秒为单位
    - MySQL >= 5.5 : 可以将慢查询日志记录到表
    - MySQL >= 5.6 : 以更细的粒度记录慢查询
    - MySQL >= 5.7 : 增加timestamps支持
  • slow_query_log_file
    - 建议配置成统一的名字
  • 用于优化查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值