服务器的配置应该符合他的工作负载、数据、以及应用需求;
需要设置的重要参数很少,--基本配置项;
schema优化、索引、查询设计;
防止过度调优;
mysql配置的工作原理
获取配置信息:命令行参数和配置文件
配置文件---操作系统启动脚本
命令行参数--启动时也会读取配置文件
查找配置文件
$ which mysqld
/mnt/mysql/bin/mysqld
$ /mnt/mysql/bin/mysqld --verbose --help|grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
配置文件语法、作用域和动态性
语法:都使用小写,单词之间用下划线或横线分开,建议使用统一风格
/usr/sbin/mysqld --auto-increment-offset=5
/usr/sbin/mysqld --auto_increment_offset=5
上面两者相同
作用域:全局、会话、对象三个级别
动态性:运行时可以修改
修改方式
set sort_buffer_size = <value>;
set GLOBAL sort_buffer_size = <value>;
set @@sort_buffer_size = <value>;
set @@session.sort_buffer_size = <value>;
set @@global.sort_buffer_size = <value>;
改变全局值,当前会话和已经存在的会话不受影响。
注意参数的单位
set default值
把这个值赋给会话级变量可以把变量改为使用全局值,把它赋给全局变量可以设置这个变量为编译内置的默认值,
建议不要这样设置全局级。
设置变量的副作用
常用变量
1.key_buffer_size
一次性分配,但不是立即分配,使用时真正分配
mysql允许创建多个键缓存
对一个已经存在的键缓存设置非零值,会导致刷新该键缓存内容。这会阻碍所有尝试访问该键缓存的操作,直到刷新操作完成。
2.table_cache_size
个数
3.thread_cache_size
mysql只在关闭连接时才在缓存中增加线程,只在创建新连接时才从缓存中删除线程
4.query_cache_size
谨慎设置--动态修改可能导致服务hang死
5.read_buffer_size
只有查询需要使用时才会为该缓存分配内存--一次性分配
6.read_rnd_buffer_size
只有查询需要使用时才会为该缓存分配内存--按需分配
7.sort_buffer_size
只在做排序时分配,一次性分配参数大小的内存
会话级分配内存,如sort_buffer_size,参数设置小点,大的排序操作时动态分配并恢复
set @@session.sort_buffer_size:=<value>;
-- execute the query...
set @@session.sort_buffer_size:=default;--不建议改成默认值
可以将类似的代码封装在函数中方便使用, 其他可以单个连接级别设置的变量有
read_buffer_size/read_rnd_buffer_size/tmp_buffer_size/myisam_sort_buffer_size
也可以使用空瓶子替换;-- 推荐使用
阅读(930) | 评论(0) | 转发(0) |