|
|
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Описание: Две таблицы. Одна с полем А заполненным некоторыми кодами и пустым полем Б. (2 млн. записей) Вторая таблица с теми же полями А и Б, но и Б уже заполнено. То есть это справочник соответствия кодов А кодам Б. (200к записей) Обе innodb. На полях А и Б нет индексов. Задача: Заполнить в первой таблице поле Б соответствующими значениями из второй таблицы-справочника. Решение: Обновляем в цикле пачками, скажем по 100 позиций. Код: sql 1. 2. 3. Проблема: Каждая итерация выполняется около 1 секунды. Т.е. 1 сек на обновление 100 записей. Что в принципе приемлемо. Но выполнив ~20 итераций за 1 секунду каждая, следующие ~20 итераций выполняются по ~6 секунд на 100 записей. Потом снова за 1 секунду. Т.е. производительность падает и растет скачками. С чем может быть связано подобное поведение? И, если не затруднит, как бы вы решали подобную задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 17:52:45 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
ddmaster, 1. версия мускл ? 2. Explain на запросыы, апдейты ? 3. память? железо? 4. издалека похоже что надо таки индексы сделать и возможно избавится от "IN" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 18:11:04 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
javajdbc, автор1. версия мускл ? 5.5 автор2. Explain на запросыы, апдейты ? 5.5 вроде не умеет для апдейта explain автор3. память? железо? память 8гб, AMD Athlon(tm) II X4 645 3,1 ГГц автор4. издалека похоже что надо таки индексы сделать можно чуть конкретнее, какие и на какие поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:09:16 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
автор5.5 вроде не умеет для апдейта explain Подразумевалось, что вы перепишете UPDATE как аналогичный SELECT и уже ему сделаете EXPLAIN. Планы совпадают в таком случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:18:13 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE kladr_street range PRIMARY PRIMARY 4 NULL 5 Using where idselect_typetabletypepossible_keyskeykey_lenrefrowsExtraidselect_typetabletypepossible_keyskeykey_lenrefrowsExtra ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:25:35 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
Хм, если правильно понял: Код: sql 1. 2. 3. idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLEtable_1rangePRIMARYPRIMARY4NULL5Using where Подзапрос: Код: sql 1. 2. 3. 4. idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLEoktALLNULLNULLNULLNULL171347Using where P.s.: сорри за предыдущее сообщение, промазал мимо предпросмотра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:32:52 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
ddmaster, как минимум на table2.А надо индекс для скорости вот этого куска: (вы вроде сказали что индексов нет?) select Б from table2 where table2.А = table1.А проверьте ЕКПЛЕЙН-ом что новый индекс сработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:33:46 |
|
||
|
Производительность update
|
|||
|---|---|---|---|
|
#18+
ddmasterХм, если правильно понял: Код: sql 1. 2. 3. idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLEtable_1rangePRIMARYPRIMARY4NULL5Using where Подзапрос: Код: sql 1. 2. 3. 4. idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLEoktALLNULLNULLNULLNULL171347Using where P.s.: сорри за предыдущее сообщение, промазал мимо предпросмотра да, во втором случае ЕКПЛАИН говорит что сделает ПОЛНЫЙ СКЛАН по 171347 записй чтон найти одну запись. Сделайте индекс по Табле2.А и все залетает как наркоман над маковым полем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 19:39:05 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38522342&tid=1835427]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 312ms |

| 0 / 0 |
