оптимизация оператора обновления - PullRequest
1 голос
/ 04 марта 2012

Я использую только базу данных MyISAM, а обновление больших таблиц занимает слишком много времени.Размер таблицы составляет около 30 ГБ (15 ГБ каждый для MYD и MYI).Можно ли как-нибудь улучшить скорость, кроме как посмотреть на индексы?

Ответы [ 3 ]

1 голос
/ 04 марта 2012

Если вы загружаете много данных, посмотрите на команды массовой вставки или даже загрузите данные в зависимости от конкретной ситуации.

Если вы выполняете много вставок, возможно, стоит протестироватьотключение клавиш перед вставками.Это может помочь ускорить процесс.

Использование

insert into myTable values("rec1","hello"),("rec2","world"),("rec3","cheesy huh");

Вставит 3 записи в 1 оператор - опять же, вам нужно проверить это.

Я сделал этоформа вставки с тысячами строк, и это хорошо работает в моем примере.

1 голос
/ 04 марта 2012

Настройка кэша ключей MyIsam: http://docs.oracle.com/cd/E19957-01/mysql-refman-5.4/optimization.html#myisam-key-cache

Общая оптимизация производительности: (их много) http://docs.oracle.com/cd/E19957-01/mysql-refman-5.5/optimization.html

30 ГБ достаточно велико, вы используете сервер высокого класса?

0 голосов
/ 14 марта 2012

еще несколько примечаний, которые могут быть интересны:

  • Изменить механизм хранения (innodb лучше для таблиц с большими объемами)
  • Разделить ваши ТАБЛИЦЫ (или целую БД) на более логические фрагменты (например, данные по годам, месяцам, регионам и т. д.), поэтому таблицы будут больше, но меньше таблиц
  • Убедитесь, что размеры буферов соединения mysql и аналогичные показатели достаточно велики для быстрой доставки
...