参数设置
全局参数:
set globa 参数名=参数值
set @@globa.参数名:=参数值
会话参数:
set [session] 参数名=参数值
set @@session.参数名:=参数值
内存配置相关参数
注:首先需要确定可以使用的内存上限
设置排序缓冲区的大小
命令:sort_buffer_size
意解:当mysql需要排序时,会立即分配此配置设置的内存大小,不管能不能用这么多。例如:当有参数设置 100M
时,有100
个排序,那么就会占用将近10G
的内存,所以设置此参数,一定要小心。
设置连接缓冲区的大小
命令:join_buffer_size
意解:如果一个查询语句中,有多个连接,那么就会为每一个连接分配此配置设置的内存大小。
设置索引缓冲区的大小
命令:read_rnd_buffer_size
意解:如果查询需要时,才会配置此内存,并且分配需要的内存大小,而不是全部内存。
设置Innodb使用的缓存池大小【重要】
命令:Innodb_buffer_pool_size
意解:这个设置直接影响到效率因素,如果mysql全部的表都使用的是 Innodb
表,我们可以用下列方法计算我们需要设置多少内存:总内存 -
(每个线程所需要的内存 *
连接数) -
系统其他程序需要使用的内存。
设置Myisam使用的缓存池大小
注: Myisam
表只会缓存索引。
命令:key_buffer_size
意解:这里我们需要注意的是,虽然mysql全部的表都使用的是 Innodb
表,但是系统表仍然是Myisam
表,所以我们还是需要设置此参数。我们可以用以下方式查看 Myisam
索引使用的内存大小。
mysql> select sum(index_length) from information_schema.tables where engine = 'myisam';
I/O配置相关参数
设置Innodb单个事务日志文件的大小
命令:Innodb_log_file_size
意解:当事务提交时,不会直接写到数据库中,而是先写到事务日志文件中,然后再向数据库中持久化。
设置Innodb事务日志的个数【一般不用管】
命令: Innodb_log_files_in_group
意解:因为当向日志文件中记录时,一个文件写满了,自动会创建写一个文件。
设置Innodb事务日志缓冲区的大小
命令:Innodb_log_buffer_size
意解: 当事务提交时,不会直接写到日志文件中,而是先写到缓冲区。一般不用设置的很大(32M~128M),因为每个一秒,就会向日志文件中刷新。
设置Innodb事务日志刷新频繁程度
命令:Innodb_flush_log_at_trx_commit
- 0
:每秒进行一次 log
写入 cache
,并 flush log
到磁盘,如果进程挂了,会丢失一秒数据。
- 1
【默认】:在每次事务提交执行 log
写入 cache
,并 flush log
到磁盘,同时也是性能最差。
- 2
【建议】:每次事务提交,执行 log
数据写入到 cache
,每秒执行一次 flush log
到磁盘,如果进程挂了,不会丢失数据,除非服务器宕机 时,才会丢失一秒数据。
设置Innodb的表空间类型
命令:Innodb_file_per_table
- 1
【默认】:独立表空间
- 0
:系统表空间
安全配置相关参数
设置指定自动清理binlog的天数
命令:expire_logs_days
意解: 默认为 0
,就是不清理的意思。也可以写天数,如 7
,就是只保存 7
天的意思。
禁止非super权限的用户写权限
命令:read_only
设置所使用的SQL模式
命令:sql_mode