Официальный сайт движения «Москва без Лужкова!»
Главная Новости Москвы Наши новости Популярное
  • Новости
  • Новости
  • ВХОД В ЛИЧНЫЙ КАБИНЕТ
    логин
    пароль
       
    Новости

    Оптимізація MySQL, optimize table - як не треба робити

    1. Коли варто застосовувати команду optimize table для блогу

    У блогосфері поради щодо прискорення роботи сайту та оптимізації розносяться з шаленою швидкістю У блогосфері поради щодо прискорення роботи сайту та оптимізації розносяться з шаленою швидкістю. При цьому мало хто з авторів перевіряє реальну корисність отриманих рад. Це удвічі дивно, тому як можливість перевірити правильність тієї чи іншої ідеї і порівняти різні думки з одного і того ж питання в Інтернеті представлена ​​дуже широко.

    В одному з блогів зустріла ось такий текст:

    Конкретний приклад з життя: 2 таблиці по 50 000 записів, в яких постійно йдуть update, insert, delete. Ясна річ, що при такому підході дані фрагментируются. Тому, коли ми робимо JOIN, то запит виконується 0.2 секунди - досить багато для бази даних. Після optimize table запит став виконуватися 0.015 сек. Ніяких додаткових індексів, покупки заліза - просто упорядкували дані на диску. Команду можна поставити в cron раз на добу, наприклад.


    Мою увагу відразу зачепилося за те, що автор робить дану процедуру раз на добу, а інші читачі тільки на цифри швидкості виконання запиту увагу звертають. А між тим, у автора написано, що у нього в добу по 50 тисяч записів змінюються, чи може цим похвалитися ваш блог? Ні? Тоді навіщо ви застосовуєте порада, яку вам не підходить?

    І ось тисячі блогерів постять собі корисну команду optimize table і рекомендує всім своїм читачам користуватися нею не рідше разу на тиждень. Хто-небудь з них почитав навіщо потрібна ця команда, що вона робить, чого вона не може зробити і чи варто її застосовувати для блогів?

    Заглянемо сюди - MySQL - довідкове керівництво російською . І знайдемо такий пункт, що стосується optimize table, цитую:

    4.5.1. Синтаксис команди OPTIMIZE TABLE
    OPTIMIZE TABLE tbl_name [, tbl_name] ...

    Команда OPTIMIZE TABLE повинна використовуватися після видалення більшої частини таблиці або якщо в таблиці було внесено багато змін в рядки змінної довжини (таблиці, в яких є стовпці VARCHAR, BLOB або TEXT). Дистанційні записи підтримуються за допомогою зв'язного списку, і наступні операції INSERT повторно використовують позиції старих записів. Для перерозподілу незайнятого простору і дефрагментувати файл даних, можна скористатися командою OPTIMIZE TABLE.
    На даний момент команда OPTIMIZE TABLE працює тільки з таблицями MyISAM і BDB. Для таблиць BDB команда OPTIMIZE TABLE виконує ANALYZE TABLE.
    Можна застосувати OPTIMIZE TABLE до таблиць інших типів, запустивши mysqld з параметром -skip-new або -safe-mode, але в цьому випадку OPTIMIZE TABLE лише тільки виконує ALTER TABLE.
    Команда OPTIMIZE TABLE працює наступним чином:
    * Якщо в таблиці є віддалені або розділені рядки, відновлює таблицю.
    * Якщо індексні сторінки не відсортовані - сортує їх.
    * Якщо статистичні дані не оновлені (і відновлення не можна здійснити шляхом сортування індексів), оновлює їх.

    Команда OPTIMIZE TABLE для MyISAM є еквівалент виконання myisamchk -quick -check-only-changed -sort-index -analyze над таблицею.
    Зверніть увагу: під час роботи OPTIMIZE TABLE таблиця заблокована!

    На такі посилання блогери ображаються, тупають ногами і кричать, що новачкам ніхто не допомагає. Новачки, вчіться допомагати собі самі, все найважливіші і корисні знання можна почерпнути з професійної літератури, а не в блогах таких же новачків.

    У визначенні все чітко і ясно написано. Команда optimize table застосовується для таблиць, в які було внесено багато змін. Багато - це не 12 коментарів і 4 пости, це кілька тисяч. А фраза про те, що під час виконання команди optimize table таблиця буде заблокована нам про що говорить? Якщо таблиця заблокована, значить і сайт, який працює з цією таблицею теж буде не працездатний. Таблиця буде заблокована повністю, навіть якщо оптимізуватися буде тільки той стовпець, що відповідає за коментарі. Звідси запитання, навіщо запускати цю команду кожен день?

    Якщо на вашому сайті один автор і відключені коментарі, вам взагалі подібна команда може не знадобитися. Якщо у вас багато коментарів і велика частина з них віддаляється через спаму, може знадобитися провести оптимізацію, але це процедура разова.

    Коли варто застосовувати команду optimize table для блогу

    1. Якщо у вас віддаляється або змінюється велику кількість статей або коментарів (велика кількість - це кілька тисяч).
    2. У години, коли відвідуваність вашого сайту найнижча.

    PS Не бійтеся звертатися за порадою до першоджерел і фаховій літературі.

    Схожі статті

    А між тим, у автора написано, що у нього в добу по 50 тисяч записів змінюються, чи може цим похвалитися ваш блог?
    Ні?
    Тоді навіщо ви застосовуєте порада, яку вам не підходить?
    Хто-небудь з них почитав навіщо потрібна ця команда, що вона робить, чого вона не може зробити і чи варто її застосовувати для блогів?
    Звідси запитання, навіщо запускати цю команду кожен день?

     

    Найди свой район!

    Восточный

    Западный

    Зеленоградский

    Северный

    Северо-Восточный

    Северо-Западный

    Центральный

    Юго-Восточный

    Юго-Западный

    Южный

    Поиск:      


     
    Rambler's Top100
    © 2007 Движение «Москва без Лужкова!»