Я использую только базу данных MyISAM, а обновление на больших таблицах занимает слишком много времени. Размер таблицы составляет около 30 ГБ (по 15 ГБ для MYD и MYI). В любом случае, я могу улучшить скорость, не смотря на индексы?оптимизация оператора обновления
ответ
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 GB довольно большой, вы бежите высокого класса сервера?
Mysql потребляет более 100% процессора, а иногда процессор отображается на 30 - 50% в верхней части. Это нормально? Другой вопрос: если я выберу перед обновлением записи, будет ли кеш использоваться? – shantanuo
Зависит от того, на какой машине он работает. Я запускал небольшие серверы до того, где это слишком высоко, и я был на общих веб-хостах, где 100% -ное время процессора ничего не значит, потому что на нем работает 24 ядра. Однако 30 ГБ довольно высока даже для сервера со многими ядрами и большой оперативной памятью (многие высокопроизводительные серверы обрабатывают 32-64 в 2012 году). Если у вас есть небольшое подмножество запросов, к которым часто обращаются, тогда это может быть ОК. Если вы запрашиваете большой набор, и большая часть вашего db хранится в ОЗУ, ваша большая бутылочная горловина должна вывести эти файлы с диска в ОЗУ. – SinisterRainbow
Если вы загружаете большое количество данных, смотрите на массовые команды вставки или даже загружаете данные в зависимости от конкретной ситуации.
Если вы делаете много вставок, вероятно, стоит проверить отключение ключей до вставок. Это может помочь ускорить процесс.
Использование
insert into myTable values("rec1","hello"),("rec2","world"),("rec3","cheesy huh");
вставит 3 записи в заявлении от 1 - опять же, вы должны проверить его.
Я сделал эту форму вставки с тысячами рядов, и она хорошо работает в моем примере.
еще несколько нот, которые могут быть interessting:
- Change Storage Engine (InnoDB лучше для highvolume таблиц)
- Partitionate ваших таблиц (или всей БД) в более логические срезы (например, данные по годам, месяц, региональные и т.д.), поэтому таблица будет больше, но меньшие
- Убедитесь, что MySQL присоединиться размерами буфера и аналогичные показатели являются достаточно большими для быстрой доставки
- 1. Оптимизация оператора обновления - Teradata
- 2. Микро-оптимизация оператора IF
- 3. если оптимизация условия оператора
- 4. JavaScript, если оптимизация оператора
- 5. Оптимизация большого количества запросов обновления
- 6. оптимизация оператора DELETE с подсчетом
- 7. Оптимизация скорости работы Java-оператора
- 8. Оптимизация условного оператора в sql
- 9. г ++ оптимизация для перегрузки оператора
- 10. Оптимизация троичного оператора в Perl
- 11. Оптимизация кнопки обновления Android?
- 12. Оптимизация обновления подзаголовка MySQL
- 13. Оптимизация сложного SQL-обновления
- 14. Оптимизация обновления QListView
- 15. Оптимизация частичного обновления
- 16. оптимизация блокировки пакетного обновления
- 17. оптимизация обновления только отсутствующих значений в базовом наборе данных с помощью оператора обновления
- 18. PostgreSQL для оператора обновления
- 19. Обновления TFS настраиваемого поля - оптимизация
- 20. Оптимизация оператора python sql в python
- 21. Оптимизация запросов MySQL с использованием оператора
- 22. SQL-оптимизация: четыре оператора в одном
- 23. Оптимизация оператора Rails Active Record. Where
- 24. Оптимизация моего оператора mysql! - RAND() TOO SLOW
- 25. Оптимизация времени критического оператора t-sql
- 26. Ado.net command.Paramaters.AddWithValue для оператора обновления?
- 27. новичка ошибка оператора обновления оракула
- 28. Добавление if внутри оператора обновления
- 29. PL/SQL ошибка оператора обновления
- 30. ява ошибка оператора обновления MySQL
не видя таблицы структуры, Ваш запрос на обновление очень сложно. Пожалуйста, предоставьте дополнительную информацию. –