mysql优化参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | -- 隔离级别 select * from `performance_schema`.variables_by_thread where variable_name= 'transaction_isolation' ; -- 全局级别和回话级参数 作用于 set session binlog_rows_query_log_events=on; set GLOBAL binlog_rows_query_log_events=on; -- 缓冲区大小 set global sort_buffer_size= 16 * 1024 * 1024 ; -- 对设置之后的会话有效,对之前连接的会话无效 SELECT @ @global .sort_buffer_size,@ @session .sort_buffer_size; SELECT @ @session .max_join_size; set @ @session .max_join_size=DEFAULT;-- 设置后为mysql内置默认值,而不是配置文件里设置的值 set @ @session .max_join_size=@ @global .max_join_size;-- 会话级别设置全局 -- 查看连接字符集 show variables like '%_connection' ; -- 计算负载高峰时占用的总内存,这个记过通常偏大,因为所有的线程都同时用到设定内存分配的最大值的情况几乎不存在,每个线程如果只是处理简单的工作,大约需要256KB的内存, SELECT (( @ @key_buffer_size + @ @innodb_buffer_pool_size + @ @innodb_log_buffer_size + @ @binlog_cache_size + @ @max_connections ) * ( @ @read_buffer_size + @ @read_rnd_buffer_size + @ @sort_buffer_size + @ @join_buffer_size + @ @thread_stack + @ @tmp_table_size )/( 1024 * 1024 * 1024 ) ) AS max_memery_gb; -- mysql实际使用的内存总和 SELECT * from sys.memory_global_total; -- 确认是否开启了所有的内存监控项 select * from performance_schema.setup_instruments where name like '%memory%' and enabled!= 'YES' ; sys.memory_global_total 统计值不准有三个原因 1 )没有在实例启动时就开启所有的内存监控项 MySQL 8.0 之前版本默认只开启了performance_schema相关内存时间监控项。其他内存监控项默认都未启用,如需启用需要在配置文件中显示指定,可以通过如下方案启动所有内存监控项: 在配置文件中添加 performance-schema-instrument= 'memory/%=ON' 重启实例 |
1 2 3 4 5 6 7 8 | 查看慢查询是否开启 select @ @slow_query_log ; 慢查询时间 select @ @long_query_time ; 开始慢查询 set global slow_query_log= 1 ; 慢查询文件记录 select @ @slow_query_log_file ;<br><br>select @ @log_slow_extra ;mysql 8.0 . 14 版本之后才有,当他为 true 时,它将记录执行sql额外的信息 |
1 2 3 4 5 | select * from sys.statement_analysis limit 1 \G; 找出总计执行时间最长的sql 如果某个sql就执行一次,花的时间比较长,就不属于这种情况不需要优化,要是多次执行的总时间消耗最长就需要优化(默认就是降序排序) select * from sys.statement_analysis; |
1 2 | 查找运行时间最长的 5 %的语句 select * from sys.statements_with_runtimes_in_95th_percentile; |
1 2 3 | 查询平均时间最长的语句: select * from `performance_schema`.events_statements_summary_by_digest order by avg_timer_wait desc limit 1 \G; |
1 2 3 4 5 6 | 查找行数最多的sql语句,这种sql通常消耗对多磁盘的读写 select * from `performance_schema`.events_statements_summary_by_digest order by sum_rows_examined desc limit 1 \G; 执行次数最多的sql,通常对整体系统性能影响最大 select * from `performance_schema`.events_statements_summary_by_digest order by count_star desc limit 1 \G; |
本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/17369572.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-05-03 pgsql日期树数值类型指定与介绍