可以用管理员登录在mysql>命令行下设置,设置是临时的。
如果希望永久生效,则要修改/etc/my.cnf文件中的[mysqld]下相关参数:
#vim /ect/my.cnf
[mysqld]
……
下面详细讲解相关运行参数的设置:
1、并发连接数设置 max_connections
最大并发连接数的设置公式:曾经有过的最大连接数/要设置的最大连接数*100%约等于85%时是合适的,15%应付突发访问量
mysql> show variables like "max_connections";
show global status like“max_used_connections”; //查看曾经有过的最大连接数
flush status;//清空曾经有过的最大连接数,重新计数
临时设置:
mysql> set global max_connections=300;
永久设置:
Vim /etc/my.cnf
[mysqld]
max_connections=300
2、连接数据库服务器超时时间的设置 connect_timeout wait_timeout
connect_timeout=10 (秒) 在获取连接时,等待握手的超时时间,只在登录时有效
wait_timeout=28800(秒)服务器在关闭一个连接上等待行动的秒数,默认28800秒断开连接的等待时间
查询:showvariables like “connect_timeout”
临时设置:setglobal connect_timeout=7;//过长会消耗系统资源,过短会频繁响应请求也会耗系统资源,一般使用默认值
查询:showvariables like “wait_timeout”;
临时设置:set wait_timeout=3600;//不能过短,否则客户端数据没有读完就会断开连接
3、设置可以重复使用的保存在缓存中线程的数量 thread_cache_size
thread_cache_size //缓存线程可以加快访问速度,不用等用户来访问的时候临时开放线程。如果访问量小,线程数大的话会浪费资源,访问量大线程数小访问会慢,应设置合适的线程数。
查询:showvariables like “thread_cache_size” 默认:9个
临时设置:setglobal thread_cache_size=8
Show global status like “thread%”;
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 1 | threads_cacheed_size的值
| Threads_connected | 1 | 已有的连接数
| Threads_created | 2 | 创建过的线程数
| Threads_running | 1 | 正在运行着的连接数
+-------------------+-------+
Threads_connected 和Threads_created值的差距过大不好,说明“thread_cache_size值设置太小了。
4、设置所有线程打开表的数量 table_open_cache 默认:2000个
查看:mysql>show variables like "table_open_cache";
临时设置:mysql>set global table_open_cache=50;
mysql> show global status like"open%table%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| Open_table_definitions | 3 |
| Open_tables | 3 | 打开表的数量
| Opened_table_definitions | 73 |
| Opened_tables | 73 |打开过的表的数量,此值过大,table_open_cache值可能太小
+--------------------------+-------+
table_open_cache 值的设置:Open_tables /table_open_cache*100%<=95%时是合理的
5、设置索引缓冲区的大小 key_buffer_size 默认: 8388608字节=8M
查看:mysql>show variables like "key_buffer_size";
mysql> show global status like"key_read%";
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Key_read_requests | 8 | 索引读取请求总数
| Key_reads | 4 | 在索引缓冲区中没有找到直接从硬盘读取的索引数量
+-------------------+-------+
key_buffer_size值的设置: Key_reads/Key_read_requests *100% 此比率值越小越好
6、每个需要进行排序的线程分配给大小的缓冲区,增加此值加速order by 和group by操作 sort_buffer_size
查看:mysql>show variables like "sort_buffer_size"; 默认:256K
7、从数据表顺序读取数据的读操作保留的缓存区的长度 read_buffer_size 默认:128K
mysql> show variables like "read_buffer_size";
8、按某种特定顺序(比如使用里order by子句的查询)输出查询结果
read_rnd_buffer_size 默认:512K
select * from mysql.usertab order by age;
mysql>show variables like "read_rnd_buffer_size";
本文出自 “IT技术学习” 博客,请务必保留此出处http://learningit.blog.51cto.com/9666723/1790376
原文地址:http://learningit.blog.51cto.com/9666723/1790376