自建 mysql 的性能问题

2021-01-20 10:58:04 +08:00
 awanganddong

mysql 版本 5.7.31 是直接用宝塔安装的

centos7 系统 4 核 8G 内存。

现在直接执行添加唯一索引的语句已经超过几十分钟 数据库数据 1 万条左右 alter table wx_clues add unique uniq(openid,wx_account_id);

现在想问下 sql 为啥执行慢,有什么优化的方法。

3602 次点击
所在节点    MySQL
24 条回复
pickcat
2021-01-20 11:06:01 +08:00
这不是 mysql 的性能问题,而是目测你上了“云”的当了。。。。。。。。。。。。。。。。
GM
2021-01-20 11:09:48 +08:00
数据库数据 1 万条,加索引几十分钟???
v2webdev
2021-01-20 11:19:51 +08:00
这估计不是 MySQL 的问题,是环境的问题。
rust
2021-01-20 11:26:48 +08:00
你这是云服务器吗?
母鸡怕不是超售到月球去了
fkname
2021-01-20 11:28:56 +08:00
手动重装一下 MySQL 试试,这个性能差的有点过分了
bbao
2021-01-20 11:30:13 +08:00
mysql 版本 5.7.31 是直接用宝塔安装的

centos7 系统 4 核 8G 内存。

现在直接执行添加唯一索引的语句已经超过几十分钟 数据库数据 1 万条左右 alter table wx_clues add unique uniq(openid,wx_account_id);

现在想问下 sql 为啥执行慢,有什么优化的方法。


1,不懂如何运维&优化配置&扩容等一系列问题
买云服务
2,2000 数据,alter table 添加索引,4 给小时左右

3,执行慢,优化方法,google,搜到的比你问的全面
bbao
2021-01-20 11:31:11 +08:00
@bbao 2000 万数据
awanganddong
2021-01-20 11:40:44 +08:00
刚刚添加唯一索引的 sql 死了,然后把 mysqld 搞挂了
我先分析下
awanganddong
2021-01-20 11:48:01 +08:00
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
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 = 512
sort_buffer_size = 2M
net_buffer_length = 4K
read_buffer_size = 2M
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 32M
thread_cache_size = 64
query_cache_size = 64M
tmp_table_size = 64M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

explicit_defaults_for_timestamp = true
#skip-name-resolve
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
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 = 512M
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
jump2cn
2021-01-20 11:53:04 +08:00
自己遍历 1w 数据都不用几十分钟
markgor
2021-01-20 12:21:41 +08:00
1W 条数据,加索引,几十分钟....随便一台普通 PC 机都超过你
[![sRjlnA.png]( https://s3.ax1x.com/2021/01/20/sRjlnA.png)]( https://imgchr.com/i/sRjlnA)
希捷 7200 hdd,4G 内存,E6700 CPU 。393216 笔记录加唯一索引只要不到 0.632 秒,当然测试用的表,数据比较简单栏位比较少。供你参考
dnsaq
2021-01-20 12:34:22 +08:00
这和自建有关系?在普通人眼里"云"是不是就是神?
IDAEngine
2021-01-20 12:56:14 +08:00
测一下云服务器性能吧,估计母鸡超售了,云服务器基本都会超售,没法保证整体的性能。

对于云服务器来说配置只是个数字而已
rekulas
2021-01-20 13:04:02 +08:00
现在的 vps 再垃圾都不至于这么慢 看看执行中的进程什么状态 是不是阻塞了
junan0708
2021-01-20 13:32:15 +08:00
被锁了吧,看看进程 kill 掉,重新加
nodesolar
2021-01-20 13:35:44 +08:00
应该是在等 MDL 锁
interim
2021-01-20 13:54:07 +08:00
先跑下性能测试脚本,可否告知是哪个云?
awanganddong
2021-01-20 14:00:37 +08:00
阿里云的机器,应该是锁的问题,重启了下 mysql,现在没问题的,但是还要配置下慢日志的参数,现在检测日志没记录下来。
v2orz
2021-01-20 14:01:29 +08:00
如果是学习的话,建议是系统的学习一下 mysql 相关的知识

如果是仅使用,个人觉得这种情况直接买云服务是最合适的场景
CallMeReznov
2021-01-20 14:03:35 +08:00
云服务器超售最可怕的不是 CPU,内存,带宽,而是不知道你邻居在跑什么东西争抢你当前实体机的硬盘 IO.
建议看磁盘 IO wait,估计延迟得上天.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746594

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX