# sql比例
知识点:Queries 总的sql执行次数; 查询/删除/插入/更新 次数 select/delete/insert/update
# table cache
知识点:Opened_tables 代表表被打开的总次数。如果一直增长,说明table_open_cache太小
# query cache
参考:http://blog.chinaunix.net/uid-25266990-id-3426963.html
知识点:Com_select 不同的查询sql语句(开启query cache后导致的)
Qcache_queries_in_cache cache中sql的数量; Qcache_hits 命中cache的次数; Qcache_inserts 进入cache的sql次数
配置参数: query_cache_min_res_unit 查询缓存分配的最小块的大小(字节)
-- 命中比例: Qcache_hits/(Qcache_hits + Com_select),比例越高越好。不高的原因:size太小,大查询刷出,写导致失效等
-- 进入比例: Qcache_queries_in_cache cache/Com_select。这个比例仅供参考,反应select满足进入cache的比例
-- 碎片数量: Qcache_free_blocks 越大,说明碎片越多,需要进行碎片整理(FLUSH QUERY CACHE;) 另一种可能,缓存没用完,但可能性较低
-- 合适最小块大小: (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache,应该与配置参数query_cache_min_res_unit相当
# buffer pool
知识点:Innodb_buffer_pool_pages_total 总大小; Innodb_buffer_pool_pages_free 未使用大小; Innodb_buffer_pool_pages_data 被使用大小
Innodb_buffer_pool_pages_dirty 脏页大小; Innodb_buffer_pool_pages_flushed 脏页请求刷新次数
-- 大小: Innodb_buffer_pool_pages_free经常为0,说明BP可能过小了
-- 写压力: Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total 越高,说明写压力比较大或在BP过小。
需增加脏页刷新速度,如何增加?增加IO能力
# innodb buffer poll read
知识点: Innodb_buffer_pool_read_requests 逻辑读次数。并不是sql查询次数
Innodb_buffer_pool_reads 从磁盘读取次数,BP中没有需要的数据
Innodb_buffer_pool_read_ahead 预读页数
Innodb_buffer_pool_read_ahead_evicted 预读页但没有被使用刷新出BP的页数
-- 磁盘读比例: Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests。越高说明BP不够用。也有可能是某种操作导致页被刷出
-- 预读功能: Innodb_buffer_pool_read_ahead_evicted / Innodb_buffer_pool_read_ahead。越高说明预读功能不合适
# 数据量统计
知识点:Bytes_received 接收字节数; Bytes_sent 发送字节数
可以结合Bytes_sent、Innodb_data_read 判断通过innodb读取但被过滤的无效数据量
# innodb data 访问
知识点: 服务启动后innodb 数据的访问统计
Innodb_data_read 被读取的数据总量
Innodb_data_reads 被读取的总次数
Innodb_data_written 被写入的数据总量
Innodb_data_writes 被写入的总次数
-- 网络负载读/写比例: Innodb_data_read / Innodb_data_written
-- 平均读/写数据量: Innodb_data_read / Innodb_data_reads 、Innodb_data_written / Innodb_data_writes
# innodb row 操作
知识点: 各种操作影响的行数。删除/插入/读取/更新 Innodb_rows_deleted/Innodb_rows_inserted/Innodb_rows_read/Innodb_rows_updated
-- 当写入量大时,可以通过这个判断哪种操作影响的行数更多
innodb_log_file_size: 应该足够大以至于在高峰期能够存下最多1小时的日志。
参考: http://www.cnblogs.com/zuoxingyu/archive/2012/10/29/2744354.html
知识点: Innodb_os_log_fsyncs 调用fsync() 次数。主要受innodb_flush_log_at_trx_commit 和 innodb_log_buffer_size 影响
Innodb_os_log_written 写入的字节数.不太准确,查看show engine innodb status的LSN比较准确
LSN记录的是redo log的写入偏移量,而 此值代表写入redo log的字节数(每次按块写入)。 详细原因见参考
# thread 线程池大小
知识点:
Threads_cached 线程池缓存的线程数。经常为0,说明thread_cache_size太小
Threads_connected 当前连接的线程数
Threads_created 线程创建数。如果一直在增长,说明thread_cache_size太小
Threads_running 当前非sleep的线程数
# 汇总统计sql
点击(此处)折叠或打开
- SHOW GLOBAL variables WHERE Variable_name in (
- 'query_cache_min_res_unit',"table_open_cache"
- );
点击(此处)折叠或打开
-
SHOW GLOBAL STATUS WHERE Variable_name in (
'Queries', "Com_select","Com_insert","Com_update","Com_delete"
,'Qcache_queries_in_cache','Qcache_inserts','Qcache_hits','Qcache_free_blocks','Qcache_total_blocks'
,"Threads_running","Threads_connected","Threads_cached","Threads_created"
,"Bytes_received","Bytes_sent","Open_tables", "Opened_tables"
,"Innodb_buffer_pool_read_requests","Innodb_buffer_pool_reads",'Innodb_buffer_pool_read_ahead','Innodb_buffer_pool_read_ahead_evicted'
,"Innodb_buffer_pool_pages_data","Innodb_buffer_pool_pages_free","Innodb_buffer_pool_pages_dirty","Innodb_buffer_pool_pages_flushed"
,"Innodb_data_reads","Innodb_data_writes","Innodb_data_read","Innodb_data_written"
,"Innodb_rows_inserted","Innodb_rows_updated","Innodb_rows_deleted","Innodb_rows_read"
,"Innodb_os_log_fsyncs","Innodb_os_log_written");