加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql11配置_Mysql 11配置项

发布时间:2022-12-19 14:07:04 所属栏目:MySql教程 来源:网络
导读: 配置文件一般在/etc/my.cnf或者是/etc/mysql/my.cnf
语法:properties的语法,注意单词用-或_分割比如:
auto-increment-offset=5
分个类
按照作用域,可以分为全局的也就是配置在配置文件

配置文件一般在/etc/my.cnf或者是/etc/mysql/my.cnf

语法:properties的语法,注意单词用-或_分割比如:

auto-increment-offset=5

分个类

按照作用域,可以分为全局的也就是配置在配置文件中的,或者是会话的,就是连接中的

还可分为动态和静态的。 动态就是在运行期间可以改写的,这个要特别小心,因为有可能造成全局刷新和阻塞

语法:

SHOW variables like '%sort_buffer_size%';

//全局的:

SET GLOBAL sort_buffer_size = ;

SET @@global.sort_buffer_size := ;

// 会话的

SET @@sort_buffer_size := ;

SET @@ssession.sort_buffer_size := ;

对于value还有一个些其他的限制,比如

SET 不能用1M

配置文件不能用表达式。 这些需要注意。

innodb_buffer_pool_size

这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。

Mysql整体可用内存的70%-80%,太大了可能会占用操作系统内存,影响性能。

可以使用show engine innodb status;展示的

BUFFER POOL AND MEMORY

查看使用情况

事务日志

Created with Rapha?l 2.1.0

写事务日志

日志缓冲区

事务日志(循环连续写入)

数据被修改,先写日志缓冲区。 缓冲区满|每秒|事务提交mysql配置, 缓冲区回写事务日志。

innodb_log_buffer_size 设置缓冲区大小。

设置原则:2-8M,一般满足一个小时的活动。活动大小:

show global status like '%Innodb_os_log_written%';

查看写入日志增量。 可以隔100计算,算两次差值。 单位为B。

最佳实践:3M

innodb_log_files_in_group 几个日志文件。默认2.一般不用改

innodb_log_file_size 日志文件大小。 又一个比较有用的参数。

官方建议 innodb_log_files_in_group * innodb_log_file_size = innodb_buffer_pool_size。

太大会使得恢复速度很慢

另外该值也没有要设置太大,跟checkpoint的频率有关(checkpoint是一个后台线程),会把事务日志中的数据写到数据文件中。

可以使用

show engine innodb status; 命令查看这部分:

LOG

Log sequence number 300 2512389215

Log flushed up to 300 2512389215

Last checkpoint at 300 2508134796

2512389215 - 2508134796 = 4m多。

有个官方推荐的公式(innodb_log_file_size*innodb_log_files_in_group(default 2))*0.75 = 4M

因为是测试环境所以没什么感觉,但实际上一般是几G才够用的。

innodb_flush_logs_at_trx_commit

0 缓冲写日志每秒一次

1 默认 最安全,每次提交写日志,且刷新(刷新到持久化存储)。

2 缓冲写日志每次提交时写,每秒一次刷新

上面缓冲写日志,实际上是从InnoDB的 缓存转移到操作系统的缓存

如果允许1秒的丢失的话,实际上是可以使用2的

并发配置

innodb_thread_concurrency 限制一次性可以有多少线程进入内核。

其值 = CPU数量 * 磁盘数量 * 2, 实际上小点效果会更好。

超过的线程会使用两阶段方式,先睡一定的微秒再尝试进入,如果还不能则进入队列。

一单进入内核那就有一定数量的tiket,下次可以直接进入内核。

innodb_commit_concurrency变量控制有多少个线程可以同一时间提交。

max_connection

防止攻击, 但是要设置足够大,免得正常业务被拒绝。

show variables like 'max_connections';

show global status like 'Max_used_connections';

观察Max_used__connections的值,能看到是否有时间点超过了最大值。

thread_cache_size

缓存线程的值,不用很大一般256就可以了

show global status like 'Threads_connected';

show global status like 'Threads_created';

如果Threads_created这个值很大或者一直增长,则需要增到配置了

table_cache_size

要足够大,避免需要重复解析打开表定义

show global status like 'Opened_tables';

这个值变化大,则需要增加

其他配置

read_only 在备库使用,强制备库不接受应用端来的变更请求

slave_net_timeout 备库连主库发现失败时间,默认一个小时,一般一分钟或更短。

innodb_autoinc_lock_mode 自增锁的模式

sort_buffer_size 8M

join_buffer_size 两个connection级别的参数,每次新的连接创建,太大可能占用太多内存,一般 2M

query_cache_size 查询缓存大小,因为会有锁,命中率等等问题。实际上用处并不是很大。一般32M

transaction_isolation 默认隔离级别。

key_buffer_size 索引缓冲区大小,可以大一点 512M

read_buffer_size查询操作缓冲区,排序时,会查一遍该缓冲区,避免磁盘读写,排序多的时候可以设置大一点, 一般4M

DBCP连接池的一些配置

initialSize 启动时创建的初始化连接数量

maxActive 连接池中可同时连接数据库的线程数。 默认8,一般20

maxIdle 最大空闲, 超过的会被回收。默认8,太小,可能造成回收创建太频繁

minIdle 最小空闲,少于会创建,默认0,可以稍微多一点,比如8

maxWait 没有可用连接时的阻塞时间,默认无现长,有可能无限挂起, 超时会抛异常。我们是30000

testOnBorrow=false 取得连接时是否验证,时间太长了有可能时效了如果不验证会为空

testWhileIdle=true 空闲时是否验证,这个要配合验证的sql.

timeBetweenEvictionRunsMillis=300000 多久启动过期清理线程

numTestsPerEvictionRun=10 每次清理几个

minEvictableIdleTimeMillis=300000 多久算是过期的

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!