Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
ALTER TABLE `table` DISABLE KEYS работает мед (Roman) 22/12/2016 - 00:30:05
      Re: почему бы и нет? (Akina) 22/12/2016 - 07:39:16

> Original message text:
> From: Roman - 22/12/2016 - 00:30:05
> Subject:ALTER TABLE `table` DISABLE KEYS работает мед
> -----------------
> ALTER TABLE `table` DISABLE KEYS работает медленнее чем когда включена индексация.
>
> использую PHP PDO для работы с базой.
>
> //================================================
> здесь некоторый код
> //================================================
> //отключаю индекс
> try {
> $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
> $s_1 = "ALTER TABLE full_gen DISABLE KEYS";
> $s_2 = "ALTER TABLE gen_codon DISABLE KEYS";
> $s_3 = "ALTER TABLE gen_nucleotid DISABLE KEYS";
> $s_4 = "ALTER TABLE gen_amino DISABLE KEYS";
> $s_5 = "ALTER TABLE gen_data DISABLE KEYS";
> $dbh->exec($s_1);
> $dbh->exec($s_2);
> $dbh->exec($s_3);
> $dbh->exec($s_4);
> $dbh->exec($s_5);
>
> } catch (Exception $e) {
> echo $e->getMessage();
> }
> //==============================================
> //здесь несколько тысяч запросов inser в 5 таблиц (крутится в цикле)
>
> try {
> $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
> $dbh->beginTransaction();
> $dbh->exec($s_1);
> $dbh->exec($s_2);
> $dbh->exec($s_3);
> $dbh->exec($s_4);
> $dbh->exec($s_5);
> $dbh->commit();
> } catch (Exception $e) {
> $dbh->rollBack();
> echo $e->getMessage();
> }
>
> //================================================
>
>
> //включаю индекс
> try {
> $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
> $s_1 = "ALTER TABLE full_gen ENABLE KEYS";
> $s_2 = "ALTER TABLE gen_codon ENABLE KEYS";
> $s_3 = "ALTER TABLE gen_nucleotid ENABLE KEYS";
> $s_4 = "ALTER TABLE gen_amino ENABLE KEYS";
> $s_5 = "ALTER TABLE gen_data ENABLE KEYS";
> $dbh->exec($s_1);
> $dbh->exec($s_2);
> $dbh->exec($s_3);
> $dbh->exec($s_4);
> $dbh->exec($s_5);
>
> } catch (Exception $e) {
> echo "Помилка: " . $e->getMessage();
> }
>
>
> //==========================================================================================================
>
>
> в результате с выключением индексов работает на 20% медленнее, чем простой insert
> таблиці myisam
>


From: Akina - 22/12/2016 - 07:39:16
Subject:почему бы и нет?
-----------------
Вы же фактически выполняете безындексное добавление плюс индексация "от нуля" - и поимеете Вы профит или оверхед, зависит от количества и структуры индексов и расходуемой на процесс памяти.

Можете ещё попробовать залочить таблицы перед добавлением без отключения индексов - станет ещё быстрее.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
43708



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |