Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL更新/插入/删除速度慢_Mysql_Performance - Fatal编程技术网

MySQL更新/插入/删除速度慢

MySQL更新/插入/删除速度慢,mysql,performance,Mysql,Performance,在使用MySQL的特定数据库中,我似乎对所有表的插入、更新和删除都很慢。这些表中的数据不多(从2k到20k)。少量的列(5-10),索引(其中两个),并且没有重复的索引问题。我正在用MyISAM运行MySQL 5.0.45 我运行以下查询,大约需要5-7秒: UPDATE accounts SET updated_at = '2010-10-09 11:22:53' WHERE id = 8; 他似乎马上就回来了 解释给了我以下信息: +----+-------------+---------

在使用MySQL的特定数据库中,我似乎对所有表的插入、更新和删除都很慢。这些表中的数据不多(从2k到20k)。少量的列(5-10),索引(其中两个),并且没有重复的索引问题。我正在用MyISAM运行MySQL 5.0.45

我运行以下查询,大约需要5-7秒:

UPDATE accounts SET updated_at = '2010-10-09 11:22:53' WHERE id = 8;
他似乎马上就回来了

解释给了我以下信息:

+----+-------------+----------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table    | type  | possible_keys | key     | key_len | ref  | rows | Extra       |
+----+-------------+----------+-------+---------------+---------+---------+------+------+-------------+
|  1 | SIMPLE      | accounts | index | NULL          | PRIMARY | 4       | NULL | 1841 | Using index | 
+----+-------------+----------+-------+---------------+---------+---------+------+------+-------------+
探查器不会显示任何重要数据,除了看似大量的上下文切换:

+----------------------+----------+-------------------+---------------------+
| Status               | Duration | Context_voluntary | Context_involuntary |
+----------------------+----------+-------------------+---------------------+
| (initialization)     | 0.000057 |                 0 |                   0 | 
| checking permissions | 0.000008 |                 0 |                   0 | 
| Opening tables       | 0.000013 |                 0 |                   0 | 
| System lock          | 0.000005 |                 0 |                   0 | 
| Table lock           | 0.000005 |                 0 |                   0 | 
| init                 | 0.000061 |                 0 |                   0 | 
| Updating             | 0.000101 |                 0 |                   0 | 
| end                  | 7.957233 |              7951 |                   2 | 
| query end            | 0.000008 |                 0 |                   0 | 
| freeing items        | 0.000011 |                 0 |                   0 | 
| closing tables       | 0.000007 |                 1 |                   0 | 
| logging slow query   | 0.000002 |                 0 |                   0 | 
+----------------------+----------+-------------------+---------------------+
这也可能有助于:

+----------------------+----------+-----------------------+---------------+-------------+
| Status               | Duration | Source_function       | Source_file   | Source_line |
+----------------------+----------+-----------------------+---------------+-------------+
| (initialization)     | 0.000057 | check_access          | sql_parse.cc  |        5306 | 
| checking permissions | 0.000008 | open_tables           | sql_base.cc   |        2629 | 
| Opening tables       | 0.000013 | mysql_lock_tables     | lock.cc       |         153 | 
| System lock          | 0.000005 | mysql_lock_tables     | lock.cc       |         162 | 
| Table lock           | 0.000005 | mysql_update          | sql_update.cc |         167 | 
| init                 | 0.000061 | mysql_update          | sql_update.cc |         429 | 
| Updating             | 0.000101 | mysql_update          | sql_update.cc |         560 | 
| end                  | 7.957233 | mysql_execute_command | sql_parse.cc  |        5122 | 
| query end            | 0.000008 | mysql_parse           | sql_parse.cc  |        6116 | 
| freeing items        | 0.000011 | dispatch_command      | sql_parse.cc  |        2146 | 
| closing tables       | 0.000007 | log_slow_statement    | sql_parse.cc  |        2204 | 
| logging slow query   | 0.000002 | dispatch_command      | sql_parse.cc  |        2169 | 
+----------------------+----------+-----------------------+---------------+-------------+
其他信息: 它在CentOS-5 VPS上运行,保证4千兆内存。在更新的_at列上没有索引,也不会在任何地方触发

[我尝试过的新事物]

  • 创建了一个新表(使用like) 运行innodb并插入所有 来自其中一个受影响用户的记录 桌子。(同样的问题)
  • 备份数据库并将其还原到 同一数据库中的不同数据库 服务器实例。(同样的问题)
  • 将相同的备份还原到我的 本地机器和我没有 问题
  • 尝试了另一个数据库 在同一个mysql服务器中 有问题的实例 数据库和其他数据库(a) Wordpress数据库)运行 更新/插入/删除很好
  • 昨晚重新启动了mysqld并重新启动了整个服务器(同样的问题)
  • 将MySQL更新为5.0.77版(相同问题)
  • 已删除其中一个受影响表中的所有索引(同一问题)

  • 你知道下一步该看什么,或者可能是什么问题吗?这似乎更像是最近出现的一个问题,尽管我不能确切地说它是什么时候开始出现的。

    如果您有可变长度的行,您可能需要偶尔运行优化表。

    最终找到了答案。该数据库不知何故丢失了MYD和MYI文件,并且仍在运行。考虑到MYD文件保存MyISAM表的数据,但这导致插入/更新/删除速度缓慢,因此不确定这是怎么可能的


    我运行了一个ALTER表,将引擎设置为MyISAM(它已经是了),然后它重新创建了这些文件。更新/插入/删除再次快速运行

    那把桌子锁上了。数据库中的活动较低,我有一个表,该表几乎没有显示此问题的操作(2k记录),所以我对其运行了优化表。不行。同样的问题,机器的生命体征如何?平均负荷?vmstat信息?低内存?大量的磁盘io?同一台mysql服务器上有很多其他数据库?尝试重新启动mysql?这个问题听起来很奇怪=(早些时候尝试重新启动MySQL。所有重要的统计数据看起来都很好;它正在休眠。我还将最新的备份还原到本地计算机上的数据库中。所有更新/插入/删除都很快。考虑到一切看起来都很好,此时很少有活动发生。在本地,上下文切换有区别:1与上下文中列出的7951相比。更新的列中是否有索引?这是在什么类型的机器上运行的?在资源有限的机器上(即:内存不多),MySQL将无法将主索引保留在内存中,每次都将强制从磁盘读取。更新的列上没有索引,并且它位于保证2 Gig的VPS上。另一个数据库(WordPress)在同一个mysql服务器实例上,似乎可以很好地处理更新/插入/删除。什么是数据库/表/列字符集和排序?是索引的
    update\u部分吗?是
    update\u的数据类型吗?