Запустите OPTIMIZE TABLE, чтобы дефрагментировать таблицы для повышения производительности.

12

Я использую 64-битную ОС Linux. Мой MySQL тюнер говорит следующее:

-------- Общая статистика ---------------------------------------- ----------
[-] Пропущена проверка версии для скрипта MySQLTuner
[OK] В настоящее время работает поддерживаемая версия MySQL 5.1.61-log
[OK] Работа на 64-битной архитектуре

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

-------- Рекомендации по безопасности ---------------------------------------- ---
[OK] Всем пользователям базы данных назначены пароли

-------- Показатели эффективности ---------------------------------------- ---------
[-] В течение: 6 с (7K q [1K qps], 142 conn, TX: 8M, RX: 701K)
[-] Чтение / запись: 97% / 3%
[-] Всего буферов: 1.7G global + 13.2M на поток (максимум 384 потока)
[OK] Максимально возможное использование памяти: 6,6 ГБ (42% от установленной оперативной памяти)
[OK] Медленные запросы: 0% (0 / 7K)
[OK] Максимальное использование доступных соединений: 5% (20/384)
[OK] Размер буфера ключа / всего индексов MyISAM: 1,5 ГБ / 2,7 ГБ
[OK] Коэффициент попадания в ключевой буфер: 97,4% (553K кешировано / 14K читает)
[OK] Эффективность кэша запросов: 64,6% (4K кэшировано / 6K выбирается)
[OK] Запрос обрезки кеша в день: 0
[OK] Сортировки, требующие временных таблиц: 0% (2 временных сортировки / 337 сортировок)
[OK] Временные таблицы, созданные на диске: 8% (17 на диске / 198 всего)
[OK] Частота попаданий в кэш потоков: 85% (20 созданных / 142 подключений)
[OK] Частота попаданий в кеш таблиц: 98% (438 открытых / 445 открытых)
[OK] Используемый лимит открытого файла: 10% (856 / 8K)
[OK] Столовые блокировки получены немедленно: 99% (2K немедленные / 2K блокировки)
[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 Верно - но я не думаю, что будет справедливо судить о чьем-то профессионализме, основанном на знании оператора SQL, когда он его видит. Исследования быстро нашли бы ответ, но ... Мне не нравится идея, что это сообщество отвергает вопросы за то, что они слишком "очевидны".
Шейн Мэдден
Вы правы, мой комментарий здесь вовсе не принадлежит, я думаю, что автор опубликовал комментарий к вопросу Шейна, а затем удалил его, или я действительно хотел опубликовать его по вопросу Барката, но я обычно добавляю больше информации, если это было так.
gparent
1
Я не согласен с вами, хотя есть место, где вы должны провести черту. Я думаю, что было бы справедливо сказать, что профессионал (faq: в профессиональном качестве), который в настоящее время работает с базами данных MySQL и пытается оптимизировать их, должен быть достаточно опытным, чтобы отыскать термин и выяснить, что это запрос MySQL из первого результата поиска. Может быть, я ожидаю слишком многого от любого сотрудника ..
gparent
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».

PJ Brunet
источник
2
Это гораздо лучшее решение, чем то, которое было принято. Нет необходимости перечислять все базы данных и таблицы перед запуском команд, а также автоматическое восстановление.
Sammitch
1
Также сделайте себе одолжение и сделайте резервную копию базы данных, прежде чем выполнять что-либо из этого. mysqldump -u username -p dbname > dbname.sqlи gzip dbname.sqlдолжен делать это красиво.
Fiasco Labs
Fiasco, по крайней мере, в mysqldump -u username -p db_name > dbname.sql
санто