首页 > 系统相关 >my.cnf 配置(4G内存、

my.cnf 配置(4G内存、

时间:2022-12-14 11:33:51浏览次数:45  
标签:like show buffer variables global cnf 4G my size

mysql有些默认的值实在是太小了,根本发挥不出来机器的性能。明明内存那么大,结果却放着不用,这性能也是非常糟糕了。
还有innodb_flush_log_at_trx_commit 和sync_binlog,这两个默认的设置恰恰是写入性能最低的搭配。

1、数据库偏向于写操作
具体的配置还是要根据自己数据库的偏好来的,如果数据库用到的事务比较多,那么建议加大事务相关的配置。
如果更偏向于写并且表很大的话,要增加表空间大小,并且增加缓冲区大小,同时事务相关的也要大一些,
因为每次插入也是要经过事务处理的,主要是innodb_log_file_size参数要设置的大一些。

2、数据库偏向于读操作
如果是更偏向于读,那么事务相关的空间可以小一些,table_open_cache和open_files_limit也可以设置的大一些,
当 Mysql 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存。临时表空间可以适当增大,因为大数据量的查询,
用到临时表也很正常,还有read_buffer_size等参数也要注意。

 

========================================
内存4G的my.cnf配置

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mariadb
basedir = /usr/local/mariadb
datadir = /data/mysql
log_error = /data/mysql/mariadb.err
pid-file = /data/mysql/mariadb.pid
skip-external-locking
key_buffer_size = 64M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
net_buffer_length = 8K
read_buffer_size = 1M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 16M
thread_cache_size = 32
query_cache_size = 32M
tmp_table_size = 64M

explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10

default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = /data/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/mysql
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 1M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

 

========================================
8GB内存的mysql配置参数

show global variables like 'key_buffer_size'; 64M //默认16M //64G的机器设置:256M

show global variables like 'max_allowed_packet'; 32M // 默认16M //64G的机器设置:32M

show global variables like 'table_open_cache'; 2048 // 默认2000 //64G的机器设置:16384

show global variables like 'sort_buffer_size'; 4M //默认是2M //64G的机器设置:32M

show global variables like 'net_buffer_length'; 16384 //默认16384 //64G的机器设置:16384

show global variables like 'read_buffer_size'; 1M //默认128k //64G的机器设置:16M

show global variables like 'read_rnd_buffer_size'; 512k //默认256k //64G的机器设置:32M

show global variables like 'myisam_sort_buffer_size';128M //默认128M //64G的机器设置:128M

show global variables like 'thread_cache_size'; 64 //默认8 //64G的机器设置:64

show global variables like 'query_cache_size'; 0 //默认16M //64G的机器设置:0

show global variables like 'tmp_table_size'; 32M //默认16M //64G的机器设置:128M

show xx like 'explicit_defaults_for_timestamp'; ON //默认OFF //64G的机器设置:ON

show global variables like 'max_connections'; 5000 //默认151 //64G的机器设置:100000

show global variables like 'max_connect_errors'; 500000 //默认100 //64G的设置:10000000

show global variables like 'open_files_limit'; 65535 //默认4184 //64G的机器设置:500000

show global variables like 'expire_logs_days'; 10 //默认10 //64G的机器设置:10

show global variables like 'innodb_file_per_table'; ON //默认ON //64G的机器设置:ON

show global variables like 'innodb_data_file_path'; 64M //默认12M //64G的机器设置:1G

===innodb相关====

show global variables like 'innodb_buffer_pool_size'; 2G //默认128M //64G的机器设置:32G

show global variables like 'innodb_log_file_size'; 256M //默认48M //64G的机器设置:4G

show global variables like 'innodb_log_buffer_size'; 32M //默认16M //64G的机器设置:64M

show xx like 'innodb_flush_log_at_trx_commit'; 2 //默认1 //64G的机器设置:2

show global variables like 'sync_binlog'; 1000 //默认0 //64G的机器设置:1000

show global variables like 'innodb_lock_wait_timeout';30s //默认50 //64G的机器设置:30

show global variables like 'back_log'; 500 //默认80 //64G的机器设置:4096

 

 

========================================
64GB内存的mysql配置参数


show global variables like 'key_buffer_size'; 256M

show global variables like 'max_allowed_packet'; 32M

show global variables like 'table_open_cache'; 16384

show global variables like 'sort_buffer_size'; 32M

show global variables like 'net_buffer_length'; 16384

show global variables like 'read_buffer_size'; 16M

show global variables like 'read_rnd_buffer_size'; 32M

show global variables like 'myisam_sort_buffer_size'; 128M
(经常需要调用临时表,所以大了一些)

show global variables like 'thread_cache_size'; 64

根据物理内存设置规则如下:
1G ---> 8
2G ---> 16
3G ---> 32
>3G ---> 64

show global variables like 'query_cache_size'; 0

当开启了 Query Cache 之后,尤其是当我们的 query_cache_type 参数设置为 1 以后,
MySQL 会对每个 SELECT 语句都进行Query Cache 查找,查找操作虽然比较简单,
但仍然也是要消耗一些 CPU 运算资源的。而由于 Query Cache 的失效机制的特性,
可能由于表上的数据变化比较频繁,大量的 Query Cache 频繁的被失效,所以
Query Cache 的命中率就可能比较低下。所以有些场景下,Query Cache 不仅不能提高效率,反而可能造成负面影响。

 

show global variables like 'tmp_table_size'; 128M
//临时表相关,不常用的话可以小一点

show global variables like 'explicit_defaults_for_timestamp'; ON
//是否显示默认时间戳

show global variables like 'max_connections'; 100000
//最大连接数,并发连接数

show global variables like 'max_connect_errors'; 10000000

show global variables like 'open_files_limit'; 500000
//mysql打开最大文件数

show global variables like 'expire_logs_days'; 10
启用二进制日志后,保留日志的天数。

show global variables like 'innodb_file_per_table'; ON


show global variables like 'innodb_data_file_path'; ibdata1:1G:autoextend
用来容纳InnoDB为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件
的最大长度都必须以字节(B)、兆字节(MB)或千兆字节(GB)为单位给出;
表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个autoextend
属性和一个最大长度(max:n)。

===innodb引擎相关配置====

show global variables like 'innodb_buffer_pool_size'; 32G

show global variables like 'innodb_log_file_size'; 4G
//事务日志文件写操作缓存区的最大长度

show global variables like 'innodb_log_buffer_size'; 64M
//经常用到事务的场景,这个值应该大一些

show global variables like 'innodb_flush_log_at_trx_commit'; 2
这个参数要配合sync_binlog参数来设置,在设置为:
innodb_flush_log_at_trx_commit=2
sync_binlog=1000


mysql的写入性能最高,可以参考:https://www.jianshu.com/p/74b03a792ff8

show global variables like 'innodb_lock_wait_timeout'; 30s

show global variables like 'back_log'; 4096

 

标签:like,show,buffer,variables,global,cnf,4G,my,size
From: https://www.cnblogs.com/vicowong/p/16981625.html

相关文章

  • 记一次节点被mysql锁定的异常处理
    参考:https://blog.csdn.net/weixin_34293141/article/details/93057113同事反馈公司的一个java客户端工具运行异常,后台log如下:2022-12-0810:52:28WARNBasicResourc......
  • 重启mysql的时候,mysql日志也会抛错错误
    修改mysql配置文件,移动mysql数据存储位置修改。重启mysql的时候,mysql日志也会抛错错误2021-11-27T00:34:43.403963Z0[ERROR]Failedtoopenlog(file'/logs/mysq......
  • my.cnf 配置文件
    #***/etc/my.cnf配置文件***#[client]port=3309socket=/usr/local/mysql/tmp/mysql.sock[mysqld]!include/usr/local/mysql/etc/mysqld.cnf #包含的配置文件......
  • linux中安装mysql
    1.安装Linux系统中自带的MySQL安装包在现在常用的发行版本里都集中了MySQL安装包CentOS系统中的YUM中包含了MySQL安装包,版本是MySQL5,rpm软件包的名称是mysql-server......
  • mybatis入门案例
    创建模块,导入坐标:<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></prop......
  • mybatis简化代码
    创建模块,导入坐标:<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></propert......
  • Mysql一个表编码的坑,mark一下
    问题:一个sql执行很慢,5分钟左右,关键是最大的表是5万出头,另一张表不到5000原因:是两个表的字符集不同,导致匹配时,没有匹配到解决办法:将两个表的字符集改成一样具体的命令:ALTERT......
  • mysql 将字段复制到另一个字段(数据运维)
    1.将同一个表中的一个字段的值复制给另一个字段UPDATEt_userSETsigned_time=create_time  create_time  是源数据,signed_time是目标数据,之前是空的2.将同一个......
  • 2:数据库的基本操作-MySQL
    (目录)2.1数据库的显示讲解information_schema:信息图式,存储服务器管理数据库的信息mysql:存放系统信息,用户名密码等performance_schema:性能图式sys:系统文件showdat......
  • MySQL
    MySQLALTER命令当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQLALTER命令。开始本章教程前让我们先创建一张表,表名为:testalter_tbl。root@host#mysql-u......