大数据库中的慢查询
Posted
技术标签:
【中文标题】大数据库中的慢查询【英文标题】:Slow Query in Big Database 【发布时间】:2021-11-02 15:45:51 【问题描述】:我对 mysql 请求的查询很慢。但要求并不难:
SELECT * FROM emailarchiv WHERE typ='MAIL' AND benutzer = '542' ORDER BY datum DESC LIMIT 0,50;
# User@Host: XXX[XXX] @ localhost []
# Thread_id: 13245239 Schema: usr_XXX_1 QC_hit: No
# Query_time: 20.919740 Lock_time: 0.000066 Rows_sent: 50 Rows_examined: 79212
好的,数据库中有 79212 个条目...但是 20 秒???
我的系统:Centos7 MariaDB 5.5、10GB RAM、10 个 CPU
这是我的 my.conf:
[mysqld]
local-infile = 0
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user = mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
# Forced OLD_PASSWORD format is turned OFF by Plesk
#old_passwords = 1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0
max_connections = 100
#port = 3306 #Port nicht aendern
key_buffer_size = 512M
max_allowed_packet = 256M
table_open_cache = 4096
sort_buffer_size = 64M
net_buffer_length = 128K
read_buffer_size = 1512K
read_rnd_buffer_size = 4096K
myisam_sort_buffer_size = 64M
max_heap_table_size = 512M
tmp_table_size = 1024M
key_cache_block_size = 4096
query_cache_size = 512M
query_cache_limit = 512M
thread_cache_size = 20
table_cache = 16384
#open_files_limit = 9212 #nicht aktivieren!! Verursacht Probleme...
#wait_timeout = 10 #nicht aktivieren !!
join_buffer_size = 32M
#bind-address = 127.0.0.1
#Aenderungen ab 23.07.2021
innodb_buffer_pool_size = 512M
max_heap_table_size= 1024M
skip-name-resolve
slow-query-log = 1
slow-query-log-file = /srv/slow-query.log
long_query_time = 5
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem
[mysqld_safe]
#log-error = /var/log/mysqld.log
这里出了什么问题?
【问题讨论】:
请提供更多信息。 MySQL 主机服务器上有任何 SSD 或 NVME 设备吗?在 pastebin.com 上发布并分享链接。从您的 SSH 登录根目录中,文本结果为:A) SELECT COUNT(*) FROM information_schema.tables; B) 显示全球状态;至少 24 小时正常运行时间后 C) 显示全局变量; D) 显示完整的处理程序;和可选的非常有用的信息包括 - htop 或 top 用于大多数活动应用程序,ulimit -a 用于 Linux/Unix 限制列表,iostat -xm 5 3 用于按设备和核心/cpu 计数的 IOPS,用于服务器工作负载调整分析以提供建议. 请编辑您的问题以显示(作为文本,而不是图像)select version()
、show create table emailarchiv
和 explain SELECT rest-of-your-query
的输出;这是查询优化帮助所需的最少信息
【参考方案1】:
我自己解决了问题;-)
我没有为“typ”和“benutzer”行使用索引,这是问题所在。现在 Query_time 是 2 秒 ?
【讨论】:
恭喜。如果提供数据,仍会提供工作负载分析的建议。以上是关于大数据库中的慢查询的主要内容,如果未能解决你的问题,请参考以下文章
Django 慢查询:将 django 过滤语句连接到数据库日志中的慢查询
优化 WordPress 插件“更好的 WordPress 最近评论”中的慢查询
phpMyAdmin中的慢查询但Mysql慢查询日志文件中没有[关闭]