Mysql
1.Mysql安装配置
Mysql8.0.21安装脚本
Mysql内存优化计算器
Mysql配置检查优化脚本
my.cnf配置详解
CentOS7.6安装Mysql8
mysql8主备安装脚本
2.Mysql日常使用
Mysql慢查询分析
login-path
3.Mysql异常处理
ERROR 1129
ERROR 1040
ERROR 24
ERROR 2006
ERROR 145
本文档使用 MrDoc 发布
-
+
首页
my.cnf配置详解
# my.cnf配置详解 ## 文件目录 ```shell # Windows 操作系统中MySQL配置文件 my.ini # Linux 操作系统中MySQL配置文件 /etc/my.cnf ``` ## 详细配置 ```shell [client] # MySQL客户端连接服务器端时使用的端口号,默认为3306 port = 3306 # 套接字文件所在目录 socket = /var/run/mysql/mysql.sock [mysqldump] # 支持较大的数据库转储,导出非常巨大的表时需要此项 quick # 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小,每个连接独立的大小,大小动态增加 max_allowed_packet = 16M ``` ```shell [mysqld] # mysqld 程序在启动后将在给定Linux账户下执行。mysqld必须从root账户启动才能在启动后切换到另一个账户下执行。mysqld_safe脚本将默认使用user=mysql选项来启动mysqld程序 user = mysql # 指定MySQL安装的绝对路径 basedir = /usr/local/mysql # 指定MySQL数据存放的绝对路径 datadir = /mydata/mysql/data # 服务端口号,默认为3306 port = 3306 # MySQL服务的唯一编号,每个MySQL服务的id需唯一 server-id = 1 # socket 文件所在目录 socket=/var/run/mysql/mysql.sock ``` ```shell # 数据库默认字符集,主流字符集支持一些特殊表情符号 character-set-server = utf8 # 数据库字符集对应一些排序等规则,注意要和character-set-server对应 collation-server = utf8_general_ci # 设置 client 连接mysql时的字符集,防止乱码 init_connect = 'SET NAMES utf8mb4' # 是否对sql语句大小写敏感,1表示不敏感 lower_case_table_names = 1 # 用于指定索引缓冲区的大小 key_buffer_size = 16M # 设置一次消息传输的最大值 max_allowed_packet = 8M # 仅仅允许使用键值的UPDATES和DELETES no-auto-rehash # 表示SQL模式的参数,通过这个参数可以设置检验SQL语句的严格程度 sql_mode = TRADITIONAL ``` ### 重点参数 ```shell # MySQL允许最大的进程连接数,如果经常出现Too Many Connections的错误提示,则需要增大此值 max_connections = 6000 # 每个用户的最大的进程连接数 max_user_connection = 3000 # 控制文件打开的个数,如果出现提示Out of resources when opening file,则要修改该参数 open_files_limit = 10240 # 表调整缓冲区大小。设置表高速缓存的数目, 大小应与 max_connections 的设置有关。执行flush tables会清空缓存的内容 table_cache = 614 # 在一个事务中binlog为了记录SQL状态所持有的cache大小 binlog_cache_size = 1M # 表示内存中临时表的最大大小,超过限值后就往硬盘写, 此限制是针对单个表的,而不是总和 tmp_table_size = 256M # 设置MYSQL线程使用的堆大小,此容量的内存在每次连接时被预留. # MySQL本身常不会需要超过64K的内存, 如果你使用你自己的需要大量堆的UDF函数, 或者操作系统对于某些操作需要更多的堆,该值需要将其设置的更高一点. thread_stack = 192K # 用于表间关联缓存的大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。 # 大部分表关联都比较影响查询性能, # 所以将此值设大能够减轻性能影响。 # 通过"Select_full_join"状态变量查看表关联的数量 join_buffer_size = 8M # MySql读入缓冲区大小。当对表进行全表扫描请求是,将MySql会为它分配一个读入缓冲区 # 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。 # 该参数对应的分配内存也是每个连接独享。 read_buffer_size = 2M # MySql的随机读缓冲区大小。可以提高很多ORDER BY的性能,当需要时由每个线程分配。 # 当进行排序查询时,MySql会分配一个随机读缓存区。首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度, # 如果需要排序大量数据,可适当调高该值。 # 需要注意的是:MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。 read_rnd_buffer_size = 16M # 批量插入数据缓存大小,可以有效提高批量插入效率,默认为8M # 注意: # 1. 不要将此值设置大于"key_buffer_size" # 2. 设置0会关闭此参数。 bulk_insert_buffer_size = 16M # 用来处理类似ORDER BY以及GROUP BY队列所引起的排序,每一个要做排序的请求,都会分到一个sort_buffer_size大的缓存 # 该参数并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。 # 例如:500个连接将会消耗500*sort_buffer_size(8M)=4G内存, 如果超过Sort_Buffer_Size设置的大小,MySQL会将数据写入磁盘来完成排序,导致效率降低。 # 属重点优化参数 sort_buffer_size = 8M # 此值表示允许应用程序在同一时间运行的线程的数量. # 设置该值的正确与否,对mysql的性能影响很大, 在多个cpu的情况下,错误设置了该值, 会导致mysql不能充分利用多cpu, 出现同一时刻只能一个cpu在工作的情况。 # thread_concurrency应设为CPU核数的2倍 # 属重点优化参数 thread_concurrency = 8 # 该值用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果,如果有大量的相同的查询并且很少修改表,那么query_cache_size可以极大的提高数据库性能, # 属重点优化参数 query_cache_size = 64M # 用于索引的缓冲区大小,增加它可以提高索引处理性能, # 对于内存在4GB左右的服务器来说,该参数可设置为256MB或384MB。 # 通过show variables like ‘%key_buffer_size%'; # 通过 show global status like ‘%key_blocks_unused%' 查看是否还有剩余,如果剩余很多,就不需要再加大key_buffer_size了 # 注意: # 1. 只用用于MyISAM表 # 2. 可以设置为内存的30%-40%左右 # 3. 即使你并不使用MyISAM 表, 最好也设置8-64M内存,由于它同样会被内部临时表使用 # 属重点优化参数 key_buffer_size = 2048M ```
zhangky
2021年6月3日 15:49
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码