Uruchom OPTIMIZE TABLE, aby defragmentować tabele w celu uzyskania lepszej wydajności

12

Korzystam z 64-bitowego systemu operacyjnego Linux. Mój tuner mysql mówi poniższe rzeczy:

-------- Statystyki ogólne ---------------------------------------- ----------
[-] Pominięto sprawdzanie wersji skryptu MySQLTuner
[OK] Aktualnie działająca obsługiwana wersja MySQL 5.1.61-log
[OK] Działa w architekturze 64-bitowej

-------- Statystyki silnika pamięci masowej --------------------------------------- ----
[-] Status: -Archiwum -BDB -Federated + InnoDB -ISAM -NDBCluster
[-] Dane w tabelach MyISAM: 1G (tabele: 1914)
[-] Dane w tabelach InnoDB: 4M (tabele: 199)
[!!] Suma podzielonych tabel: 296

-------- Zalecenia bezpieczeństwa ---------------------------------------- ---
[OK] Wszyscy użytkownicy bazy danych mają przypisane hasła

-------- Wskaźniki wydajności ---------------------------------------- ---------
[-] Up: 6s (7K q [1K qps], 142 conn, TX: 8M, RX: 701K)
[-] Odczyt / zapis: 97% / 3%
[-] Całkowita liczba buforów: 1,7 G globalnie + 13,2 mln na wątek (maksymalnie 384 wątków)
[OK] Maksymalne możliwe użycie pamięci: 6,6 G (42% zainstalowanej pamięci RAM)
[OK] Wolne zapytania: 0% (0 / 7K)
[OK] Najwyższe wykorzystanie dostępnych połączeń: 5% (20/384)
[OK] Rozmiar bufora klucza / całkowite indeksy MyISAM: 1,5G / 2,7G
[OK] Współczynnik trafień bufora klucza: 97,4% (553K w pamięci podręcznej / 14K odczytów)
[OK] Wydajność bufora zapytań: 64,6% (pamięć podręczna 4K / wybór 6K)
[OK] Zapytanie ściąga pamięć podręczną dziennie: 0
[OK] Sortowanie wymagające tabel tymczasowych: 0% (2 sortowania temp / 337 sortowań)
[OK] Tabele tymczasowe utworzone na dysku: 8% (17 na dysku / ogółem 198)
[OK] Współczynnik trafień w pamięci podręcznej wątków: 85% (20 utworzonych / 142 połączeń)
[OK] Współczynnik trafień w pamięci podręcznej tabeli: 98% (438 otwarty / 445 otwarty)
[OK] Wykorzystany limit otwartych plików: 10% (856 / 8K)
[OK] Blokady tabeli nabyte natychmiast: 99% (2K natychmiastowe / 2K blokady)
[OK] Rozmiar danych / pula buforów InnoDB: 4,2 mln / 8,0 mln


-------- Zalecenia ----------------------------------------- ------------
Ogólne zalecenia:
    Uruchom OPTIMIZE TABLE, aby defragmentować tabele w celu uzyskania lepszej wydajności
    MySQL zaczął działać w ciągu ostatnich 24 godzin - zalecenia mogą być niedokładne

Zalecają uruchamianie OPTIMIZE TABLEtabel defragmentacji w celu uzyskania lepszej wydajności; Ale nie wiem, jak uruchomić to za pomocą Putty.

Czy jest ktoś, kto może dać mi kod, jak uruchomić go za pośrednictwem Putty?

Barkat Ullah
źródło

Odpowiedzi:

7

OPTIMIZE TABLE to instrukcja SQL - uruchom ją w kliencie MySQL.

W wierszu poleceń serwera powinieneś mieć zainstalowanego klienta wiersza poleceń; możesz połączyć się z bazą danych w kliencie za pomocą mysql -u username -p.

Więcej informacji znajduje się w dokumentacjiOPTIMIZE TABLE .

Shane Madden
źródło
Ta strona dotyczy pytań zadawanych przez profesjonalnych administratorów systemu.
gparent
@ rodzic - czy to miało być pytanie, a nie całkowicie poprawna odpowiedź Shane'a?
Mark Henderson
2
@ Rodzic Zgadza się - ale nie sądzę, aby można było oceniać czyjś profesjonalizm na podstawie znajomości instrukcji SQL, gdy ją zobaczą. Badania szybko przyniosłyby odpowiedź, ale .. Nie podoba mi się pomysł, że ta społeczność odwraca pytania za zbyt „oczywiste”.
Shane Madden,
Masz rację, mój komentarz w ogóle tu nie pasuje, myślę, że autor opublikował komentarz do pytania Shane'a, a następnie go usunął, albo to, albo naprawdę chciałem opublikować to pytanie Barkata, ale zwykle dodawałbym więcej informacji, jeśli tak było.
gparent
1
Nie zgadzam się z tobą, jest miejsce, w którym musisz narysować linię. Myślę, że można uczciwie powiedzieć, że profesjonalista (często zadawane pytania: w celach zawodowych) obecnie pracujący z bazami danych MySQL i próbujący je zoptymalizować, powinien być wystarczająco biegły, aby wyszukiwać w wyszukiwarce hasło i dowiedzieć się, że jest to zapytanie MySQL od pierwszego wyniku wyszukiwania. Może za dużo
oczekuję
18

Możesz także spróbować mysqlcheck -u username -p --auto-repair --optimize --all-databasesw terminalu.

Jeśli chodzi o uruchamianie „optymalizacji tabeli”, możesz uruchomić MySQL w ten sposób, mysql -u username -pa stamtąd możesz wykonywać polecenia. Zazwyczaj pierwsze polecenie, którego używam, to show databases;naprawdę powinieneś najpierw znaleźć samouczek MySQL. Pierwszy, który pojawił się w Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Nieważne, czy używasz szpachli, czy nie. Możesz powiedzieć „z wiersza poleceń” zamiast „przez Putty”.

PJ Brunet
źródło
2
To jest znacznie lepsze rozwiązanie niż to, które zostało zaakceptowane. Nie trzeba wyliczać wszystkich baz danych i tabel przed uruchomieniem poleceń, a także automatycznej naprawy.
Sammitch,
1
Zrób też przysługę i wykonaj kopię zapasową bazy danych przed uruchomieniem którejkolwiek z nich. mysqldump -u username -p dbname > dbname.sqli gzip dbname.sqlpowinien to zrobić ładnie.
Fiasco Labs,
Fiasco, przynajmniej w centach, polecenie powinno byćmysqldump -u username -p db_name > dbname.sql
yitwail