mysql - 阻止 MariaDB 锁定进程

标签 mysql database locking mariadb

我们在安装了 Magento 的地方运行 CentOS DirectAdmin 安装和 MariaDB 10.2.14。

目前我们的数据库在进程运行时经常锁定,因此所有其他进程都在等待当前进程完成。这是一个很大的问题,因为例如,在这种情况下,添加到购物车的过程也在等待,人们无法订购。

如何防止数据库被锁定这么久并解决这个问题?

服务器:

6x Intel Xeon
32GB RAM
500GB SSD

我的.cnf:

[mysqld]

bind-address = 127.0.0.1
local-infile=0
innodb_file_per_table=1
innodb_file_format=barracuda

slow_query_log = 1
slow_query_log_file=/var/log/mysql-log-slow-queries.log

key_buffer = 250M
key_buffer_size = 250M
max_allowed_packet = 128M
table_cache = 512
sort_buffer_size = 7M
read_buffer_size = 7M
read_rnd_buffer_size = 7M
myisam_sort_buffer_size = 64M
tmp_table_size = 190M
query_cache_type = 1
query_cache_size = 220M
query_cache_limit = 512M
thread_cache_size = 150
max_connections = 225
wait_timeout = 300
innodb_buffer_pool_size = 7G
max_heap_table_size =180M
innodb_log_buffer_size = 36M
join_buffer_size = 32M
innodb_buffer_pool_instances = 7

long_query_time = 15
table_definition_cache = 4K
open_files_limit = 60K
table_open_cache = 50767
innodb_log_file_size= 128M
innodb_lock_wait_timeout = 700

最佳答案

关于 my.cnf [mysqld] 部分的建议

以下带# 的开头可禁用或删除以允许默认值满足您的要求 Rick James 在之前的评论中已经提到了其中一些内容。

. key_buffer . key_buffer_size .表缓存 .排序缓冲区大小 .读缓冲区大小 . read_rnd_buffer_size . MyISAM_sort_buffer_size . join_buffer_size . long_query_time . innodb_lock_wait_timeout

进行这些更改或将行添加到您的 my.cnf 中

query_cache_type=0  # from 1  to turn OFF QC and conserve CPU cycles
query_cache_size=0  # from 220M to conserve RAM for more useful work
query_cache_limit=0  # from 512M to conserve RAM for more useful work
thread_cache_size=100  # from 150  V8 refman suggested CAP to avoid OOM
innodb_lru_scan_depth=100  # from 1024 to minimum to conserve CPU every SECOND
innodb_flush_neighbors=0  # from 1 no need to waste CPU cycles when using SSD
innodb_io_capacity_max=10000  # from 2000 since you have SSD
innodb_io_capacity=5000  # from 200 to use more of your SSD capability

如需更多帮助,请查看我的个人资料,clk 网络个人资料以获取联系信息。

关于mysql - 阻止 MariaDB 锁定进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810836/

相关文章:

php - CodeIgniter 数据库迁移错误

mysql - 无法连接到远程服务器: Tunnel error - could not open port forwarding to SSH channel

c# - 将查询部分与 Lucene 和数据库 (MySQL) 中的部分相结合

C# Lock 语法 - 2 个问题

php - HTML 表单不提交到 MYSQL 数据库

mysql - 删除带有来自子选择的 id 的行(使用 SQLite,使用 MySQL 失败)

mysql - 错误 : #1062 - Duplicate entry '1' for key 'PRIMARY'

linux - 许多进程的缓存锁定?

java - 监视器锁的最低字节使用值是多少?

PHP 检查 MySQL 数据库中的邮政编码