我在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

TableOpMsg_TypeMsg_Test
myblog.my_postsanalyzestatusOK
myblog.my_usersanalyzestatusOK

优化表

OPTIMIZE TABLE `my_cao_order`

修复表

只有数据库引擎是:MyISAM可以使用此命令。

REPAIR TABLE table_name;
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤