mysql内存相关参数配置:
查看mysql配置文件:mysqld --help --verbose | grep -A 1 'Default options'
mysql 设置全局参数:set global 参数名=参数指 获者 set @@global.参数名:=参数值;
mysql设置会话参数:set [session] 参数名=参数值; set @@session.参数名 := 参数值;
mysql 查看参数命令:show variables where variable_name='参数值' or variable_name='参数值';
mysql 内存相关配置参数:
1 在配置前先确定使用内存的上限,(32位操作系统 只能使用3G以下的内存) 2 确定mysql每个链接使用的内存。
mysql 对于某些缓存是会对每个连接单独分配的,所以链接数越大,占用的的内存就会越多。
sort_buffer_size :拍续缓冲区的大小,mysql是会在查询排序时才会为每个缓冲区分配内存,一旦查询,mysql会指定sort_buffer_size参数大小的全部内存。
join_buffer_size : 连接缓冲区的尺寸,这个参数定义的是mysql每个线程指定的每个缓冲区连接的大小。 如果一个查询语句关联了多个表,那么,就会为每个连接分配一个连接缓冲。
read_buffer_size : 这个参数指对一个myisam表全表扫描时,分配的读缓冲区,mysql只有在有查询需要时分配。这个参数的大小必须是4K的倍数。
read_rnd_buffer_size : 指索引缓冲区的大小,有查询需要时才会分配。分配需要的大小,而不是参数指定的大小。
以上四个参数,全是为每个线程所分配的。如果有100个连接,会产出以上参数100倍内存大小的和。
缓冲池内存分配:
innodb_buffer_pool_size = 总内存 -(每个线程所需要的内存*连接数)-系统保留内存
key_buffer_size = myisam表缓冲池大小
查看缓存池大小: select sum (index_length) from information_schema.tables where engine = 'myisam';
mysql I/O相关参数配置:
innodb I/O相关配置
innodb_log_file_size: innodb日志文件大小 innodb_log_files_in_group :事务文件的个数
总大小 = innodb_log_file_size * innodb_log_files_in_group
innodb_log_buffer_size : 日志缓冲区大小 一般 32M-128M
innodb_flush_log_at_commit :刷新日志的频繁程度
0 :每秒进行一次log写入cache,并flush log 到磁盘:
1(默认): 在每次事务提交执行log写入cache,并flush log到磁盘
2 (建议):每次事务提交,执行log数据写入到cache ,每秒执行一次flush log 到磁盘
innodb_flush_method=O_DIRECT ---指如何和文件系统交互,影响如何读写数据,linux建议O_DIRECT,所有读和写通过存储设备完成。
innodb_file_per_table = 1 使用独立空间
innodb_doublewrite = 1 双写缓存
myisam I/O相关配置
delay_key_write:
OFF:每次写操作后刷新键 缓冲中的脏块到磁盘
ON:只对在建表时指定了delay_key_write选项的表使用延迟刷新
ALL:对所有myisam表都使用延迟写入
mysql 安全参数
expire_logs_days 指定自动清理binlog天数
max_allowed_packet 控制mysql可以接受的包的大小
skip_name_resolve 禁用DNS查找
read_only 禁止非super权限的用户写权限 从服务建议开启
skip_slave_start 禁用slave自动恢复 从库建议开启
sql_mode 设置mysql所使用的sql模式