首页 > 数据库 >MySQL 8.0参数最佳实践

MySQL 8.0参数最佳实践

时间:2023-10-11 20:32:21浏览次数:45  
标签:8.0 log MySQL innodb 参数 mysql 3307 data size

MySQL8.0.34版本my.cnf最佳实践参考实例

[client]
port                                    = 3307
socket                                  = /data/mysql/3307/run/mysql.sock
default-character-set                   = utf8mb4

[mysql]          
port                                    = 3307
socket                                  = /data/mysql/3307/run/mysql.sock
default-character-set                   = utf8mb4
prompt                                  = \\u@\\h:\\d \\r:\\m:\\s >

[mysqld]
server-id                               = 64112
port                                    = 3307
mysqlx_port                             = 33070
admin_address                           = 127.0.0.1
admin_port                              = 9999
default_storage_engine                  = InnoDB
character_set_server                    = utf8mb4

transaction_isolation                   = READ-COMMITTED
max_allowed_packet                      = 1G
max_connections                         = 1000
max_connect_errors                      = 1000000

# 机械硬盘保持默认值200即可,SSD磁盘建议调高该值(比如2000)
innodb_io_capacity                      = 2000

datadir                                 = /data/mysql/3307/data
log_bin                                 = /data/mysql/3307/binlogs/mysql-bin
socket                                  = /data/mysql/3307/run/mysql.sock
mysqlx_socket                           = /data/mysql/3307/run/mysqlx.sock 
pid-file                                = /data/mysql/3307/run/mysql.pid
log_error                               = /data/mysql/3307/logs/error.log
slow_query_log_file                     = /data/mysql/3307/logs/slow.log
tmpdir                                  = /data/mysql/3307/tmp

# 建议调整为操作系统内存的50%到60%之间
innodb_buffer_pool_size                 = 32G


# 缓存binlog event的内存,当有大事物,大的DML操作,binlog_cache_size不足以容纳所有的binlog event时,便转而使用临时文件来缓存binlog event,这样性能会下降(采用临时文件缓存binlog event 肯定比采用内存缓存binlog event慢)
# 从Binlog_cache_use和Binlog_cache_disk_use可以看出是否使用了binlog cache或binlog 临时文件用于保存binlog event。
binlog_cache_size                       = 2M

# 用于普通索引扫,范围扫,和全表扫的表连接缓冲区的大小,在MySQL 8.0.18及更高版本中,此变量还控制用于哈希联接hash join的内存量。
# 默认256KB,当无法添加索引时,增加join_buffer_size的值以获得更快的完全联接。为两个表之间的每个完整联接分配一个联接缓冲区。
# 当使用块嵌套循环(Block Nested-Loop)时,更大的联接缓冲区是有益的,因为涉及到第一张表的所有关联行的所有关联列被存储在join buffer中(会减少磁盘IO)。
# 当使用Batched Key Access BKA时,也是将外部表的相关列存入join buffer中,减少随机IO,join buffer越大,越能提高性能。
join_buffer_size                        = 8M

# 默认256K,如果内存充足,增大该值会加速排序的速度,提高查询性能。connection级参数,在每个connection需要buffer的时候,一次性分配的内存,并不是越大越好,过大的设置+高并发可能会耗尽系统内存资源。
sort_buffer_size                        = 2M

read_buffer_size                        = 2M
read_rnd_buffer_size                    = 2M



# 临时表内存大小,默认16兆,执行计划中 Using temporary 出现表明用到临时表,当临时表内存不够用的时候,会使用磁盘,性能下降,典型场景:group by.  
# 当Created_tmp_disk_tables 数值增加,说明tmp的大小不够用,进而判断是否需要增加tmp_table_size的大小。
# Created_tmp_disk_tables/Created_tmp_tables 大于一定比例(5% or 10%),尝试调大tmp_table_size
tmp_table_size                          = 64M


# 从8.0.27版本后引入该参数,适用于创建或重新生成辅助索引的在线DDL操作,默认1兆,加大该值有理由提高在线DDL的执行时间。
innodb_ddl_buffer_size                  = 1G
 

# 从8.0.30版本引入该参数,产生不可见主键简称GIPK,在建表时没有指定主键的情况(备库库会出现全表扫描回放问题,带来非常大的主备延迟),MySQL会帮助我们创建名为 my_row_id 主键,建议主从库都设置。
sql_generate_invisible_primary_key      = ON


# 从8.0.30引入该参数,该参数为MySQL redo的大小,如果显示定义了innodb_log_file_size 和innodb_log_files_in_group 那么,innodb_redo_log_capacity= innodb_log_files_in_group * innodb_log_file_size,否则保持默认值100MB
innodb_redo_log_capacity                = 6G



innodb_data_file_path                   = ibdata1:500M;ibdata2:500M:autoextend
innodb_temp_data_file_path              = ibtmp1:500M;ibtmp2:500M:autoextend:max:5120M
innodb_flush_method                     = O_DIRECT
default-time-zone                       = '+8:00'
log_bin_trust_function_creators         = 1
innodb_adaptive_hash_index              = 0
log_timestamps                          = SYSTEM

gtid_mode                               = ON
enforce_gtid_consistency                = ON

lower_case_table_names                  = 1
report_host                             = '9.23.64.112'
relay-log                               = /data/mysql/3307/binlogs/relay-log
relay-log-index                         = /data/mysql/3307/binlogs/relay-log.index

binlog_expire_logs_seconds              = 2592000
slow_query_log                          = 1
long_query_time                         = 1

my.cnf使用示例

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

标签:8.0,log,MySQL,innodb,参数,mysql,3307,data,size
From: https://blog.51cto.com/u_13482808/7816156

相关文章

  • cpp中函数参数的默认值
    title:aliases:tags:-cpp/函数category:-方法stars:url:creation-time:2023-10-0919:24modification-time:2023-10-1014:20:19[[Cpp]]函数的默认值写法:voidDemo(intx,inty=1;intz=2);由于cpp中函数可能存在声明和定义,如果同时在声明和定......
  • 2023_10_11_MYSQL_DAY_03_笔记_下
    2023_10_11_MYSQL_DAY_03_笔记_下#截断表的作用是把原来的表摧毁,重新创建一个结构和原来一模一样的新表,语法如下:TRUNCATETABLEtable;#TRUNCATE和DELETE区别#1、TRUNCATE是DDL命令,使用ROLLBACK不可以回滚。而DELETE是DML命令,使用ROLLBACK可以回滚。#2、DELETE可以通过指定......
  • ADO.NET读取MySQL数据库的三种方式:DataReader、DataSet、DataView
    https://blog.csdn.net/lilongsy/article/details/127351421ADO.NET读取MySQL数据库有多种方式:DataReader、DataSet、DataView。Command对象的ExecuteScalar方法查询数据库获取某个单个值,但是如果获取多行、多列可以用ExcecuteReader,ExcecuteReader返回一个DataReader的数据流对......
  • MySQL连接数超出最大值报错及修改
    报错:createconnectionSQLException,url:jdbc:mysql://xx.xxx.x.xx:6306/hksk-cloud-mes?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai,errorCode1040,s......
  • ASEMI整流桥GBU810参数,GBU810封装
    编辑-ZGBU810参数描述:型号:GBU810最大直流反向电压VR:1000V最大工作峰值反向电压VRWM:700V最大平均正向电流IF:8A非重复正向浪涌电流IFSM:200A操作和储存温度范围TJ,TSTG:-55to150℃正向电压VF:1.1V最大反向泄漏电流IRM:5uA每个元件的典型热阻RthJA:2.2℃/W GBU810封装规格:封装:GBU-4总长......
  • C++ - 连接mysql数据库
    1.准备工作1.1把libmysql.dll和libmysql.lib文件复制到工程目录下首先,我们要找到刚刚开始下载的MySQL数据库的安装目录,打开目录,并且将libmysql.dll文件和libmysql.lib文件复制到工程目录下~我安装MySQL的路径:E:\mysql-5.7.42-winx64\lib把libmysql.dll文件和l......
  • C++ - 操作mysql数据库
    操作数据库的案例#include<stdio.h>#include<stdlib.h>#include<mysql.h>//固定不变的MYSQLmysql;//一个数据库结构体MYSQL_RES*res;//一个结果集结构体MYSQL_ROWrow;//char**二维数据,存放一条条记录voidconnect();//连接数据库voidinsert();//插入......
  • MySQL优化
    1.性能优化:1.1表结构优化(下述建议针对数据量巨大,每一点空间都需要节省的情况,当然在设计初期能考虑到以下建议最好)A:字段设计优化1.1.1整数类型:  1.对于整数int类型,数据量较大的情况下建议区分tinyint,int,bigint,三者所占据的空间有很大的......
  • fiddler进行断点修改参数
    一、设置断点:Rules->AutomaticBreakpoints>AfterResponses beforerequests,即请求前打断点。该断点打在客户端发出请求后,未到达服务器之前。afterresponse,即响应后断点。该断点打在服务端发出响应后,未到达客户端之前。 二、.或者直接点击下面allprocesses右边的小方......
  • mysql 删除数组 json 字段中的某个指定值
    例:SELECTcar_imgFROMlogistics_car_infoWHEREcar_id=2--结果为:["1","2","3","4"]SELECTJSON_SEARCH(car_img,'one','4')FROMlogistics_car_infoWHEREcar_id=2--结果为:"$[3]"SELE......