200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql buffer used_MySQL性能调优(软调优)

mysql buffer used_MySQL性能调优(软调优)

时间:2022-05-12 02:03:33

相关推荐

mysql buffer used_MySQL性能调优(软调优)

基于一台普通版的MySQL服务器

目的:加快服务器的响应速度

进程数=进程*线程

1、Mysql的查询过程

1)客户端向服务器发送连接请求

2)服务器端(连接池)开辟线程响应用户请求

3)用户发起sql语句查询数据库select * from db.a;

4)查询缓存:记录用户的sql执行语句和查询结果

2、加快Mysql服务器的运行速度

1)替换有问题的硬件(最有效的方法)

如:CPU、内存、硬盘

2)对Mysql进程的设置进行调优

A、并发数

优化mysql数据库的性能参数:

–max_connections //服务器允许的并发访问量,默认值100

–max_used_connections

//已经响应的连接数,max_connections * 100% = 99.6% (理想值 ≈ 85%)

–vi /etc/f //在配置文件/etc/f中设置永久生效

[mysqld]

max_connections = 1000

mysql>use mysql;

mysql>show variables like‘max_connections’;//查看最多并发连接数,默认100mysql>show global status like‘max_used_connections’;//当前已连接数

mysql> flush status; //刷新

mysql>set global max_connections=200; //修改参数值,当前生效

B、超时

mysql>show variables like ‘connect_timeout’; // 连接超时时间,单位为秒,默认10s mysql>show variables like ‘wait_timeout’;

//客户端与服务器连接时,客户端在28800S没有执行任何操作,服务器端会自动断开连接,在 关闭它之前,在一个连接上等待行动的秒数,默认28800s mysql>set global connect_timeout=20; //全局修改前面加global修改

mysql>set wait_timeout=7200; //不在全局修改,用这条命令

并发数多时,可设置connect_timeout短一些;并发数少时,可设置其长一些

C、索引缓冲区

–key_buffer索引缓冲区大小单位M,默认是16M,显示单位字节

–计算索引未命中缓存的概率公式:Key_reads / Key_read_requests * 100%=值 越小越好

概率高时说明找到的机率小,可在配置文件中适当加大key_buffer的值

-概率低时应适当加大key_buffer的值

mysql>show variables like‘key_buffer_size’;//查看索引缓冲区的大小 mysql>show variables like ‘key_read%’;

//key_read_requests 索引读取请求总数key_reads在内存中没有找到,直接从硬盘中读取索引的数量

vim /etc/f //设置

[mysqld]key_buffer = 16M

8bit=1字节,1024字节=1K,1024K=1M ,1024M=1G,1024G=1T

D、其它设置

sort_buffer_size = 512K

–每个需要进行排序的线程分配该大小的缓冲区。增加此值加速order by或group by查询的、 速度,查询显示单位字节

mysql>show variables like ‘sort_buffer_size’;

read_buffer_size = 256K

–从数据表顺序读取数据的读操作保留的缓存区的长度

mysql>show variables like"read_buffer_size%";

read_rnd_buffer_size = 512K

–按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果

mysql>show variables like"read_rnd_buffer_size%";

thread_cache_size = 10

–可以重复使用的保存在缓存中线程的数量 (默认值是0)mysql> show variables like ‘thread_cache_size‘;

mysql> set global thread_cache_size=10; //指定大小

3)对查询进行优化

A、记录慢查询

vi /etc/f

[mysqld]

log-slow-queries//启用慢查询日志

log-query-time=5//记录5秒没有显示结果集的查询 默认10秒

log-queries-not-using-indexes//记录没有使用索引查询

[root@localhost ~]mysqldumpslow mysqld-slow.log //查看慢查询日志的内容

B、服务器关于查询缓存的配置

mysql> show variables like "query_cache%";

+------------------------------+---------+

| Variable_name| Value |

+------------------------------+---------+

| query_cache_limit | 1048576 | 超过此大小的查询将不缓存

| query_cache_min_res_unit |4096 | 缓存块的最小大小

| query_cache_size | 0 | 查询缓存大小

| query_cache_type| ON | 缓存类型,决定缓存什么样的查询

| query_cache_wlock_invalidate | OFF | 当有其他客户端正在对MyISAM表进行写操作 时,如查询在query cache中,是否返回cache 结果,还是等写操作完成再读表获取结果

+------------------------------+---------+

mysql> show global status like "qcache%";

+-------------------------+-------+

| Variable_name | Value |

+-------------------------+-------+

| Qcache_free_blocks | 0 | 缓存中相邻内存块个数,数目大说明可能有碎片

| Qcache_free_memory | 0 | 缓存中的空闲内存

| Qcache_hits| 0 | 每次查询在缓存中命中时就增大

| Qcache_inserts | 0 | 每插入一个查询就增大,命中次数/插入数就是不中比

| Qcache_lowmem_prunes | 0 | 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数

| Qcache_not_cached | 0 | 不适合进行缓存查询的数量

| Qcache_queries_in_cache | 0 | 当前缓存查询(和响应)的数量

| Qcache_total_blocks | 0 | 缓存中块的数量

+-------------------------+-------+

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。