Ви повинні перетворити всі дані в InnoDB, щоб запобігти проблемам із блокуванням таблиці. Однак ось дещо подумати:
Індексація FULLTEXT
В даний час тільки MyISAM підтримує індексацію FULLTEXT. Індексація FULLTEXT для InnoDB наразі працює для MySQL 5.6, але не готова до виробництва . Якщо у вас є будь-які таблиці Drupal, які мають індекси FULLTEXT, наразі вони не можуть бути перетворені в InnoDB.
ОНОВЛЕННЯ на індексацію FULLTEXT
MySQL 5.6 тепер GA (для виробничого використання). Спробуйте спробувати індексацію FULLTEXT в InnoDB.
Щоб знайти ті таблиці з FULLTEXT
індексом, запустіть цей запит:
SELECT table_schema,table_name
FROM information_schema.statistics
WHERE index_type='FULLTEXT';
Якщо жодні рядки не повернулися, конвертуйте всі таблиці InnoDB у вміст вашого серця. Я писав раніше повідомлення про те, як перетворити всі таблиці MyISAM в InnoDB, використовуючи лише mysql .
Реплікація MySQL
Якщо у вас є важке для читання середовище, читання можуть пройти швидше в MyISAM, якщо ви зробите наступне:
- Мастер налаштування / Реплікація підлеглого
- Створіть одного чи декількох зчитуваних рабів під головним
- Додайте
--skip-innodb
в /etc/my.cnf на всіх Slaves (перетворює таблиці в MyISAM при завантаженні даних у Slave)
- За допомогою цієї команди змініть формат рядків усіх таблиць MyISAM на кожному підлеглому на FIXED:
ALTER TABLE tblname ROW_FORMAT=FIXED;
- Я щось про це розмістив у DBA StackExchange
- Книга MySQL Database Design and Tuning рекомендує використовувати
ROW_FORMAT=FIXED
на сторінках 72,73. Це внутрішньо перетворить усі поля VARCHAR у CHAR. Це зробить таблицю MyISAM більшою, але виконані SELECTs проти неї будуть набагато швидшими. Я особисто можу це засвідчити. Колись у мене був стіл, який був 1,9 Гб. Я змінив формат на ALTER TABLE tblname ROW_FORMAT=FIXED
. Стіл закінчився 3,7 Гб. Швидкість SELECTs проти нього була на 20-25% швидшою, не покращуючи і не змінюючи нічого іншого.
Єдиний головний біль у цьому полягає в тому, щоб ваша програма знала про окремі раби, що читаються.
ЕПІЛОГ
Якщо ви шукаєте інші переваги, які має кожен механізм зберігання даних, перевірте DBA StackExchange: