mysql11配置_Mysql 11配置项
语法: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 多久算是过期的 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |