V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
awanganddong
V2EX  ›  MySQL

自建 mysql 的性能问题

  •  
  •   awanganddong · 2021-01-20 10:58:04 +08:00 · 3644 次点击
    这是一个创建于 1433 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    centos7 系统 4 核 8G 内存。

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

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

    24 条回复    2021-01-21 17:10:10 +08:00
    pickcat
        1
    pickcat  
       2021-01-20 11:06:01 +08:00   ❤️ 1
    这不是 mysql 的性能问题,而是目测你上了“云”的当了。。。。。。。。。。。。。。。。
    GM
        2
    GM  
       2021-01-20 11:09:48 +08:00
    数据库数据 1 万条,加索引几十分钟???
    v2webdev
        3
    v2webdev  
       2021-01-20 11:19:51 +08:00
    这估计不是 MySQL 的问题,是环境的问题。
    rust
        4
    rust  
       2021-01-20 11:26:48 +08:00
    你这是云服务器吗?
    母鸡怕不是超售到月球去了
    fkname
        5
    fkname  
       2021-01-20 11:28:56 +08:00
    手动重装一下 MySQL 试试,这个性能差的有点过分了
    bbao
        6
    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
        7
    bbao  
       2021-01-20 11:31:11 +08:00
    @bbao 2000 万数据
    awanganddong
        8
    awanganddong  
    OP
       2021-01-20 11:40:44 +08:00
    刚刚添加唯一索引的 sql 死了,然后把 mysqld 搞挂了
    我先分析下
    awanganddong
        9
    awanganddong  
    OP
       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
        10
    jump2cn  
       2021-01-20 11:53:04 +08:00
    自己遍历 1w 数据都不用几十分钟
    markgor
        11
    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
        12
    dnsaq  
       2021-01-20 12:34:22 +08:00
    这和自建有关系?在普通人眼里"云"是不是就是神?
    IDAEngine
        13
    IDAEngine  
       2021-01-20 12:56:14 +08:00
    测一下云服务器性能吧,估计母鸡超售了,云服务器基本都会超售,没法保证整体的性能。

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

    如果是仅使用,个人觉得这种情况直接买云服务是最合适的场景
    CallMeReznov
        20
    CallMeReznov  
       2021-01-20 14:03:35 +08:00
    云服务器超售最可怕的不是 CPU,内存,带宽,而是不知道你邻居在跑什么东西争抢你当前实体机的硬盘 IO.
    建议看磁盘 IO wait,估计延迟得上天.
    encro
        21
    encro  
       2021-01-20 14:07:55 +08:00
    1,看服务器性能,负载怎么样;瓶颈在 cpu 还是磁盘还是内存,1 万记录非常少,任何 ssd 应该都是几秒钟即可;
    2,可能是锁住了,等待其他进程释放,参考:Mysql 不锁表增加字段和索引方法 https://c4ys.com/archives/1943
    PetterZhu
        22
    PetterZhu  
       2021-01-20 21:28:15 +08:00
    加锁的可能性比较大,1w 条数据,再怎么烂的机器也要不了 10 几分钟,
    awanganddong
        23
    awanganddong  
    OP
       2021-01-21 10:56:41 +08:00
    只有几条数据的表,alter 语句就提示 Waiting for table metadata lock

    现在正在追这个问题
    awanganddong
        24
    awanganddong  
    OP
       2021-01-21 17:10:10 +08:00
    SELECT * from information_schema.INNODB_TRX

    Kill id(上面查询出来的 trx_mysql_thread_id)

    这两条可以查找到死锁的线程 ID
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1027 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:49 · PVG 03:49 · LAX 11:49 · JFK 14:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.