​Mysql体系结构

blob.png

逻辑结构

  1. 客户端:php,java…应用程序

  2. 通过drive连接到mysql,mysql线程池

  3. sql形成MD5/hash的key去查缓存(query cache)是否有这个结果

  4. sql分析器,进行优化找到最优执行路径

  5. 到存储引擎拿数据

blob.png

服务器进程

  1. 连接层:连接接入,认证

  2. SQL层:语法校验

  3. 存储层:DBA应该最关注的地方

数据库优化的本质: 

减少IO

把随机IO想办法转成顺序IO

blob.png

连接层

通信协议

线程

验证

OneSQL就是在连接层把thread-pool做了一个优化,官方的thread-pool也差不多

blob.png

SQL层:SQL解析,授权,优化器,查询执行,查询日志等等

blob.png

SQL语句处理过程

连接mysql后查询query cache

query cache是没有经过语法解析的

select * from tb1 where id=1; 和select * from tb1 where Id=1; 

实际生产中是禁掉query cache

query cache是mysql一个性能瓶颈形成全局锁

blob.png

整体模块结构

untitled.png

Oracle官方有一个去IOE团队推ndb cluster 哈哈哈

日志

  1. 错误日志

  2. 慢日志(slow_query_log)

  3. 二进制日志(binary log)

  4. 一般日志(general log)

blob.png

blob.png

blob.png

slow_query_log_file 

set global general_log=1; 

select sleep(3); 

set global general_log=0;