Not the answer you need?
Register and ask your own question!

From time to time very slow UPDATE

4matic4matic EntrantInactive User Role Participant
I have a system:
Windows XP SP2
MySQL 5.0.27
PHP 5.2.0 (mysqli ext)


CREATE TABLE `parts` ( `partid` int(10) unsigned NOT NULL auto_increment, `oenumsearch` char(30) NOT NULL, `tmid` smallint(5) unsigned NOT NULL default '0', `oenum` char(35) NOT NULL, `isset` smallint(5) unsigned default '0', `numtypeid` smallint(5) unsigned default '0', `textid` int(10) unsigned default NULL, `texts` char(255) default NULL, `isttx` tinyint(1) unsigned NOT NULL default '0', `isimg` tinyint(1) unsigned NOT NULL default '0', `isauto` tinyint(1) unsigned NOT NULL default '0', `remarks` char(255) default NULL, PRIMARY KEY (`partid`), KEY `tmid` (`tmid`), KEY `oenums` (`oenumsearch`,`tmid`), KEY `oenumsearch` (`oenumsearch`), KEY `isset` (`isset`), KEY `numtypeid` (`numtypeid`), KEY `textid` (`textid`) ) ENGINE=InnoDB</pre>

I start transaction and update some tables. One of the updated tables is `parts`. When start query:

UPDATE `parts` SET `textid`=1471, `texts`="Some text" WHERE `partid`=47437</pre>


Database is stuck, and query executed about 300-400 seconds. In this time I cant start another query. Another query is wait while ends query for update.
This stuks is happend form time to time. Only one client sends query, thats means database is not busy.

Where looking for problem? I dont uderstand what to do. Help me, please.

P.S. Sorry for my dreadful English, my native language is PHP ).

Comments

  • SpeepleSpeeple Contributor Inactive User Role Advisor
    How many rows does this table have?

    You have a quite a few indexes which will slow down updates.

    Also note that KEY `oenumsearch` (`oenumsearch`) is a redundent index. Key lookups on the column oenumsearch can happily be performed on the KEY `oenums` (`oenumsearch`,`tmid`) index.
  • 4matic4matic Entrant Inactive User Role Participant
    <table border="0" align="center" width="90%" cellpadding="3" cellspacing="1"><tr><td class="SmallText">Quote:</td></tr><tr><td class="quote">
    Also note that KEY `oenumsearch` (`oenumsearch`) is a redundent index. Key lookups on the column oenumsearch can happily be performed on the KEY `oenums` (`oenumsearch`,`tmid`) index.
    </td></tr></table>
    Thanks. I will drop this index. I knew this, but I did this for sure.

    <table border="0" align="center" width="90%" cellpadding="3" cellspacing="1"><tr><td class="SmallText">Quote:</td></tr><tr><td class="quote">
    How many rows does this table have?
    </td></tr></table>
    About 7 000 000 and still growing. It will stop about 20 000 000 rows.

    <table border="0" align="center" width="90%" cellpadding="3" cellspacing="1"><tr><td class="SmallText">Quote:</td></tr><tr><td class="quote">
    You have a quite a few indexes which will slow down updates
    </td></tr></table>
    I understand, that indexes is slow down updates. I dont understand, why one update fast, another update - slow?
Sign In or Register to comment.

MySQL, InnoDB, MariaDB and MongoDB are trademarks of their respective owners.
Copyright ©2005 - 2020 Percona LLC. All rights reserved.