逻辑结构
-
客户端:php,java…应用程序
-
通过drive连接到mysql,mysql线程池
-
sql形成MD5/hash的key去查缓存(query cache)是否有这个结果
-
sql分析器,进行优化找到最优执行路径
-
到存储引擎拿数据
服务器进程
-
连接层:连接接入,认证
-
SQL层:语法校验
-
存储层:DBA应该最关注的地方
数据库优化的本质:
减少IO
把随机IO想办法转成顺序IO
连接层
通信协议
线程
验证
OneSQL就是在连接层把thread-pool做了一个优化,官方的thread-pool也差不多
SQL层:SQL解析,授权,优化器,查询执行,查询日志等等
SQL语句处理过程
连接mysql后查询query cache
query cache是没有经过语法解析的
select * from tb1 where id=1; 和select * from tb1 where Id=1;
实际生产中是禁掉query cache
query cache是mysql一个性能瓶颈形成全局锁
整体模块结构
Oracle官方有一个去IOE团队推ndb cluster 哈哈哈
日志
-
错误日志
-
慢日志(slow_query_log)
-
二进制日志(binary log)
-
一般日志(general log)
slow_query_log_file
set global general_log=1;
select sleep(3);
set global general_log=0;