Запустіть OPTIMIZE TABLE для дефрагментації таблиць для кращої продуктивності


12

Мені працює 64-розрядна ОС Linux. Мій тюнер mysql говорить про наступне:

-------- Загальна статистика ---------------------------------------- ----------
[-] Пропущена перевірка версії сценарію MySQLTuner
[OK] На даний момент підтримується підтримуваний MySQL версії 5.1.61-журнал
[OK] Операція з 64-бітовою архітектурою

-------- Статистика двигуна зберігання --------------------------------------- ----
[-] Статус: -Архів -BDB -Федерація + InnoDB -ISAM -NDBCluster
[-] Дані в таблицях MyISAM: 1G (Таблиці: 1914)
[-] Дані в таблицях InnoDB: 4М (Таблиці: 199)
[!!] Всього фрагментованих таблиць: 296

-------- Рекомендації з безпеки ---------------------------------------- ---
[OK] Усім користувачам бази даних призначені паролі

-------- Показники ефективності ---------------------------------------- ---------
[-] До: 6 секунд (7K q [1K qps], 142 конн., TX: 8M, RX: 701K)
[-] Читає / пише: 97% / 3%
[-] Загальна кількість буферів: 1,7 Гбайт + 13,2 М на кожну нитку (384 максимум потоку)
[OK] Максимально можливе використання пам'яті: 6,6 Г (42% встановленої оперативної пам’яті)
[OK] Повільні запити: 0% (0 / 7K)
[OK] Найвище використання доступних з'єднань: 5% (20/384)
[OK] Розмір ключового буфера / загальний індекс MyISAM: 1,5 Г / 2,7 Г
[ОК] Швидкість звернення до ключового буфера: 97,4% (кешировано 553 Кб / 14 К читання)
[OK] Ефективність кешу запитів: 64,6% (кеш 4K / 6K вибирає)
[Добре] Запит на чорнослив в день: 0
[OK] Сортування, які потребують тимчасових таблиць: 0% (2 тимчасові сорти / 337 сортування)
[OK] Тимчасові таблиці, створені на диску: 8% (17 на диску / 198 всього)
[OK] Швидкість звернення до кешу потоку: 85% (20 створено / 142 з'єднання)
[OK] Частота показів кешу таблиці: 98% (438 відкрито / 445 відкрито)
[OK] Використовується обмеження відкритого файлу: 10% (856 / 8K)
[OK] Блокування таблиць отримано негайно: 99% (2K негайних / 2К замків)
[OK] Розмір даних / буферний пул InnoDB: 4.2M / 8.0M


-------- Рекомендації ----------------------------------------- ------------
Загальні рекомендації:
    Запустіть OPTIMIZE TABLE для дефрагментації таблиць для кращої продуктивності
    MySQL запустився протягом останніх 24 годин - рекомендації можуть бути неточними

Їх рекомендації - бігати OPTIMIZE TABLEдо дефрагментації таблиць для кращої продуктивності; Але я не знаю, як це запустити через Putty.

Хтось може надати мені код, як запустити його через Putty?

Відповіді:


7

OPTIMIZE TABLE є оператором SQL - запустіть його в клієнті MySQL.

У командному рядку сервера у вас повинен бути встановлений клієнт командного рядка; ви можете підключитися до своєї бази даних у клієнті за допомогою mysql -u username -p.

Для отримання додаткової інформації див. ДокументаціюOPTIMIZE TABLE .


Цей сайт стосується питань, які задають професійні адміністратори системи.
gparent

@gparent - чи це означало бути питанням, а не ідеально правильною відповіддю Шейна?
Марк Хендерсон

2
@gparent Right - але я не думаю, що справедливо судити про чийсь професіоналізм на основі знання твердження SQL, коли вони бачать це. Дослідження швидко знайшло б відповідь, але .. Мені не подобається думка, що ця спільнота відвертає питання за занадто "очевидний".
Шейн Мадден

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

1
Я не згоден з вами, але там, де ви повинні провести межу, є місце. Я думаю, що справедливо сказати, що професіонал (faq: в якості професіонала), який зараз працює з базами даних MySQL і намагається їх оптимізувати, повинен бути достатньо досвідченим, щоб гуглювати термін і з'ясувати, що це запит MySQL з першого результату пошуку. Можливо, я чекаю занадто багато у будь-якого співробітника ..
чітко

18

Ви також можете спробувати mysqlcheck -u username -p --auto-repair --optimize --all-databasesв терміналі.

Що стосується запуску "оптимізації таблиці", ви можете запустити MySQL так, mysql -u username -pі звідти ви можете виконувати команди. Як правило, перша команда, яку я використовую, show databases;але ви повинні дійсно спочатку знайти підручник MySQL. Перший, який з’явився в Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Ви використовуєте шпаклівку чи ні, не має значення. Ви можете сказати "з командного рядка" замість "через Putty".


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

1
Також зробіть собі послугу і зробіть резервну копію бази даних перед тим, як запустити будь-яку з цього. mysqldump -u username -p dbname > dbname.sqlі gzip dbname.sqlповинен це робити красиво.
Лабораторії Фіаско

Фіаско, як мінімум, у mysqldump -u username -p db_name > dbname.sql
центсі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.