Mysql优化

2019-08-27  本文已影响0人  JumpBorderLine

1、软优化

1.1 EXPLAIN或DESC命令

使用该命令分析一条查询语句的执行信息,其中会显示索引和查询数据读取条数等信息。也可使用它分析一条查询语句执行的信息,其中会显示索引(key)和查询数据读取数据条数等信息。

1.2 优化子查询(join)

使用join代替子查询,子查询嵌套循环,嵌套查询时会建立一张临时表,临时表的建立和删除会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高。

1.3 使用索引

创建索引、使用索引。创建后可以使用profile查看执行时间。

创建索引:create index 索引名 from 表名(列名)。

详情参考:https://www.cnblogs.com/xu-xiaofeng/p/7673776.html

1.4 分解表

字段较多的表,若某些字段使用频率较低,将其分离出来从而形成新的表。

1.5 中间表

大量连接查询的表可以创建中间表,从而减少在查询时造成的连接耗时。

1.6 增加冗余字段

减少连接查询以提高效率。

2、硬优化

2.1 硬件三件套

配置多核和频率高的CPU,多核可以执行多个线程;

配置大内存,提高内存,既提高缓存区容量,减少磁盘I/O时间,从而提高响应速度;

配置高速磁盘或合理分布磁盘,提高并行操作能力。

2.2 优化数据库参数

优化数据库参数可以提高资源利用率,从而提高MySQL服务器性能.MySQL服务的配置参数都在my.cnf或my.ini,下面列出性能影响较大的几个参数.

key_buffer_size:索引缓冲区大小

table_cache:能同时打开表的个数

query_cache_size和query_cache_type:前者是查询缓冲区大小,后者是前面参数的开关,0表示不使用缓冲区,1表示使用缓冲区,但可以在查询中使用SQL_NO_CACHE表示不要使用缓冲区,2表示在查询中明确指出使用缓冲区才用缓冲区,即SQL_CACHE.

sort_buffer_size:排序缓冲区

2.3 分库分表

主从数据库,配置master主数据库,设置好服务id与日志文件,它主要负责更新操作,从数据库slave,设置好服务id与日志文件(为了避免主数据库宕机后无机器代替,故从数据库的日志文件名与主数据库的一样),然后开启从数据库的IO线程与SQL线程。

2.4 缓存集群

上一篇 下一篇

猜你喜欢

热点阅读