关于MySQL数据库调优的几点心得

时间:2022-09-18 11:39:19

数据库是我们后端工程师平时工作很重要的一部分,对于一些数据量较小的项目,数据库的调优好像看上去没那么重要。

但是对于百万级千万级数据量的项目,一个小小的查询,若没有好好的优化和处理的话,整个项目的运行速度和性能会有很严重的问题。

MySQL数据库是当今世界上运用范围最为广阔的一个数据库,著名的Facebook公司采用的数据库就是MySQL,国内也有很多超级公司采用的数据库也是MySQL

今天我就结合我自己的经验和知识,总结几点经验心得,有不到之处,希望大家能够指出。

存储引擎使用:InnoDB

数据库调优进行第一步即把原本MySQL数据库默认的材存储引擎MyISAM换为InnoDB,你自己在测试的时候可能会发现,MyISAM的速度比InnoDB要快,这是因为InnoDB不仅仅缓存了索引,还缓存的数据,但最重要的一点,MyISAM引擎不支持事务,而InnoDB支持事务,比MyISAM的调试安全性高了很多。另外,你设置innodb_flush_log_at_trx_commit = 2  可以获得接近的读取性能 (相差百倍) 。
修改存储引擎的SQL语句:
mysql -u [USER_NAME] -p -e "SHOW TABLES IN [DATABASE_NAME];" | tail -n +2 | xargs -I '{}' echo "ALTER TABLE {} ENGINE=InnoDB;" > alter_table.sql
perl -p -i -e 's/(search_[a-z_]+ ENGINE=)InnoDB//1MyISAM/g' alter_table.sql
mysql -u [USER_NAME] -p [DATABASE_NAME] < alter_table.sql

为每个表分别创建InnoDB File:

innodb_file_per_table=1

为查询缓存优化你的查询

绝大多数