mysql的基本优化

一,查询缓存

Query Cache对于繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有大量相同sql查询的表,查询缓存会节约很大的性能

查询缓存的相关参数

1)query_cache_limit允许进入查询缓冲区的最小数据大小,默认值是1MB

2)query_cache_size决定分配给缓存的内存数量,单位是字节。 ,默认是0

3)query_cache_type OFF | ON指定查询缓冲的类型,0是关闭,1为开启缓默认为1.

4)read_buffer_size = n 为从数据表顺序读取数据的读操作保留的缓存区的长度(默认设置是128KB);

5)read_rnd_buffer_size = n 类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)

6)join_buffer_size = n 在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。

查询缓存的性能评估

1)用这个命令查看:mysql> SHOW VARIABLES LIKE '%query_cache%';

have_query_cache     YES    --查询缓存是否可用
query_cache_limit   1048576 --可缓存具体查询结果的最大值
query_cache_size  599040  --查询缓存的大小
query_cache_type    YES --阻止或是支持查询缓存

2)在 SHOW STATUS 中,你可以监视查询缓存的性能:

变量含义

Qcache_queries_in_cache 在缓存中已注册的查询数目

Qcache_inserts 被加入到缓存中的查询数目

Qcache_hits 缓存命中的次数

Qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目

Qcache_not_cached 没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE)

Qcache_free_memory 查询缓存的空闲内存总数

Qcache_free_blocks 查询缓存中的空闲内存块的数目

Qcache_total_blocks 查询缓存中的块的总

二,索引缓存

key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。对于内存在2GB左右的服务器该参数可设置为128M,性能由一下几个参数决定

1)Key_read_requests :是从cache中读索引的请求

2)Key_reads :是从物理硬盘上读索引的次数

通过二者的比值即

key_reads /key_read_requests来决定,其比值越小性能就越优,至少是1:100

状态值可以使用SHOW STATUS LIKE ‘key_read%’获得

key_buffer_size �C 128M

key_read_requests �C 650759289

key_reads - 79112

3) 比例接近1:8000 健康状况非常好

三, 表缓冲区的限制

table_cache指定表高速缓存的大小,值在2G内存以下的机器中的值默认时256到512可通过以下两个参数来衡量其性能

(1) Open_tables :表示当前打开的表数目

(2)opened_tables :表示累计已经打开的表数目

通过二者的比值来调整性能,如果Opened_tables远大于Open_tables,并且Open_tables很接近table_cache,那么就说明table_cache偏小

可用该命令查看:mysql> SHOW STATUS like '%open_%'

四,连接数限定

(1)back_log :指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中,默认值为50。对于Linux系统推荐设置为小于512的整数。

(2) max_connections :允许并发连接的数量,该值过小你将经常看到 Too many connections 错误。 默认数值是100,我把它改为1024 。

五,等待时间限制

1)interactive_timeout :对后续起的交互链接有效 。 默认数值是28800

2)wait_timeout:对当前交互链接有效,服务器在关闭连接之前在一个连接上等待行动的秒数,默认数值是28800,即如果没有事情发生,服务器在 8个小时后关闭连接

注意二者的值要相等否则不生效

你可能感兴趣的:(mysql,数据库,职场,休闲)