mysql排查笔记



1.排查sql查询缓慢


- 临时打开通用查询日志
set GLOBAL general_log = 'on';
- 将日志记录在表中
set global log_output='table';
vim /etc/my.cnf
文件中找到慢查询日志的位置:
slow_query_log_file = /usr/local/mysql/log/mysql-slow.log
slow_query_log=TRUE
然后:
tail -f /usr/local/mysql/log/mysql-slow.log
- 关闭通用查询日志(重要!!一定要操作,防止数据量过大~)
set GLOBAL general_log = 'off';
这个的目的需要收集一些SQL
2. 针对慢的SQL
-- explain extended xxx(xxx是SQL)
-- show warnings 命令
explain extended  (查询执行计划)
这个会比直接使用explain多展示一些执行的细节
3. 索引和事务相关
检查索引有问题的表
SELECT table_schema,table_name,data_length,index_length
FROM information_schema.tables WHERE engine='InnoDB'
AND data_length/(data_length+index_length) < 0.8;


估算innodb_buffer_size的配置大小
SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM
(SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
FROM information_schema.tables WHERE engine='InnoDB') A;


查询现在Innodb实际使用的存储大小
SELECT (PagesData*PageSize)/POWER(1024,3) DataGB FROM
(SELECT variable_value PagesData
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_data') A,
(SELECT variable_value PageSize
FROM information_schema.global_status
WHERE variable_name='Innodb_page_size') B;


查询阻塞的事务详情
select trx_id,trx_mysql_thread_id from information_schema.INNODB_TRX;


查询表字段
show fields from XX like 'aaa';
show create table api_inner_config



4.赋权限
grant select on *.* to read@'%' identified by "read" with grant option; //只读用户

猜你喜欢

转载自blog.csdn.net/lanranguidao/article/details/80289800