您的位置:首页 > 数据库 > MySQL

数据库参数对mysql性能的影响

2017-04-21 14:59 393 查看

参数设置

全局参数:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql