持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
MYSQL **配置调优与SQL优化
**innodb_buffer_pool_size
缓冲池是数据和索引缓存的地方这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘对性能影响非常大,一般可以设置内存的50~80%。
innodb_log_file_size
这是redo日志的大小redo日志被用于确保写操作快速而可靠并且在崩溃时恢复MySQL5.5和5.6及以上版本可以调整,根据业务设置成500M到几G应用程序需要频繁的写入数据,可以设置大点。
innodb_file_per_table
是否采用独立表空间默认关闭,建议都设置成独立表空间如果不设置,磁盘空间满了,删除表空间也无法释放,必须做数据迁移。
log-bin
是否开启binlog默认关闭,生产项目建议开启回滚和数据恢复审计
max_connections
应用程序没有正确的关闭数据库连接,Toomanyconnections错误默认是100,建议设置成1000应用程序里使用连接池或者在MySQL里使用进程。
lower_case_table_names
是否区分大小写默认区分,生产使用根据业务需求调整。
character_set_server
字符集迁移、数据库变更、数据导入等都是必须要注意的,不然数据乱码了就会很麻烦。
慢查询相关设置
查看MySQL慢查询是否开启:show variables like '%slow%';
开启MySQL慢查询功能:set global slow_query_log = ON;
查看MySQL慢查询时间设置,默认10秒:
show variables like "long_query_time";
修改为记录1秒内的查询:set long_query_time = 1;
查看MySQL慢查询日志路径:show variables like '%slow%';
查看慢SQL日志:tailf/mysql_slowlog/slow.log
优化慢S QL
1、 添加索引
2、 隐性转换
3、 规避 like‘%%’,根据业务情况查询
4、 减少在 SQL层面做逻辑运算,数据库表结构 需要 设计的合理