我在2020年手上有多个服务器,在不同的服务器上导入相同的SQL脚本导入的速度差距非常大,导出也是一样的。
我们思维往往限制在MySQL使用的区间里,其实MySQL配置也是影响非常大的。
- 内存
- 日志
你1G的内存,性能肯定不咋地!如果你给了8G内存,性能肯定不一样!
你开启binlog也会影响到DML语句的性能!
我这边展示一下宝塔的MySQL8配置文件
[client]
#password = your_password
port = 33306
socket = /tmp/mysql.sock
[mysqld]
binlog_cache_size = 64K
thread_stack = 256K
join_buffer_size = 1024K
max_heap_table_size = 64M
port = 33306
socket = /tmp/mysql.sock
datadir = /www/server/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 100G
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 32M
thread_cache_size = 64
tmp_table_size = 64M
default_authentication_plugin = mysql_native_password
lower_case_table_names = 1
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 100
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
binlog_expire_logs_seconds = 600000
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
innodb_data_home_dir = /www/server/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /www/server/data
innodb_buffer_pool_size = 256M
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 4
innodb_write_io_threads = 4
[mysqldump]
quick
max_allowed_packet = 500M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 2M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
宝塔官方的案例,供我们参考
binlog日志开启 - 关闭
做这些操作前记得,如果你开启了主从复制等一些依赖binlog日志的场景,需要做好风险评估!
开启binlog日志
打开 MySQL 配置文件(通常是 my.cnf
或 my.ini
),找到 [mysqld]
部分。
[mysqld]
log_bin = mysql-bin
指定二进制日志文件的名称前缀为 "mysql",生成的二进制日志文件将以 "mysql-bin" 开头。
关闭binlog日志
打开 MySQL 配置文件(通常是 my.cnf
或 my.ini
),找到 [mysqld]
部分。
[mysqld]
skip-log-bin
注意:修改MySQL配置文件必须重启MySQL!!!不然不会生效!
其实我们还忽略表分析表、优化表、修复表
分析表 ANALYZE TABLE XXXX
ANALYZE TABLE `testChatSet`
-- 也可以使用多张表
ANALYZE TABLE `testChatSet` `testChatSet2`
ANALYZE命令是将Table
优化表
OPTIMIZE TABLE `my_cao_order`
修复表
只有数据库引擎是:MyISAM可以使用此命令。
REPAIR TABLE table_name;
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
评论(0)