优化数据类型
删除重复索引和冗杂索引
- pt-duplicate-key-checker
- mysqlindexcheck
反范式化
适当的反范式化,有利于减少很多的查询
增加中间表
业务关系经常需要查询,可以增加中间表,减少一定量的数据查询
分析数据表
analyze table
检查数据表
check table
优化检查表
优化将删除和更新造成的磁盘碎片进行优化
optimize table
拆分数据库
服务器优化
主要从服务器硬件优化和mysql配置两方面入手
硬件配置
- 加强系统内存
- 使用高转速磁盘
- 提供系统并行能力
- 使用多核CPU
内核优化
- 优化配置/etc/sysctl.conf配置文件
- 优化配置/etc/security/limits.conf配置文件
- 优化磁盘调度
mysql配置
mysql的配置一般在my.conf或者my.ini文件中。Linux一般为my.conf,window一般为my.ini
- max_connections 最大连接数
- table_cache 同时打开表数
- table_open_cache sql执行线程打开数据表的缓存数量
- innodb_buffer_pool_size Innodb数据和索引缓存大小
- innodb_log_buffer_size Innodb重做日志的缓存大小
- sort_buffer_size 缓存排序的大小
- read_buffer_size 读取缓存大小
- back_log 段时间处理连接请求
- thread_cache_size mysql缓存数据库最大连接数
- innodb_lock_wait_timeout Innodb储存行锁的时间
应用程序优化
- 复用数据库连接:连接数据库,非常的耗时耗费性能,每次连接都会产生一次IO操作,建立一个连接池,每次连接从连接池中获取一个连接,用完后放回去。常用的数据库连接池:dbcp、c3P0、proxool和Druid
- 减少数据访问
- 开启查询缓存,select相同的查询语句第一次查询保存在缓存之中
![在这里插入图片描述](https://1000bd.com/contentImg/2024/03/29/6034dfdb6019ae7a.png)
- 使用外部缓存 Memcached、redis等
- 分布式Mysql架构
其他优化
- 使用performance_schema数据库分析
- sys数据库分析
- 资源组优化