|
Rozmiar: 1567
Komentarz: *** KREACJA ***
|
Rozmiar: 3467
Komentarz: + restore
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 9: | Linia 9: |
| {{{ | Pokazanie listy procesów w wersji skróconej (początki poleceń SQL): {{{#!highlight sql numbers=off SHOW FULL PROCESSLIST }}} Pokazanie listy procesów z pełnymi poleceniami SQL (czasami z bardzo długimi zapytaniami): {{{#!highlight sql numbers=off |
| Linia 14: | Linia 20: |
| {{{ | {{{#!highlight sql numbers=off |
| Linia 20: | Linia 26: |
| {{{ | {{{#!highlight sql numbers=off |
| Linia 28: | Linia 34: |
| -- ALTER TABLE tbl_name ADD INDEX column_name (column_name); -- OPTIMIZE TABLE tbl_name |
|
| Linia 33: | Linia 41: |
| {{{ | {{{#!highlight sql numbers=off |
| Linia 38: | Linia 46: |
| {{{ | {{{#!highlight sql numbers=off |
| Linia 44: | Linia 52: |
| {{{ EXPLAIN SELECT * FROM `ibf_core_attachments_map` AS `core_attachments_map` WHERE location_key='forums_Forums' AND id1=56489 AND id2=1260029 AND id3 IS NULL; |
{{{#!highlight sql numbers=off EXPLAIN SELECT * FROM `ibf_core_attachments_map` AS `core_attachments_map` WHERE location_key='forums_forums' AND id1=56489 AND id2=1260029 AND id3 IS NULL; |
| Linia 48: | Linia 56: |
| == Pokazanie indeksów związanych z tabelą == {{{#!highlight sql numbers=off SHOW INDEXES FROM tbl_name; }}} == Struktura tabeli == Domyślnie pokazanie samych kolumn: {{{#!highlight sql numbers=off -- describe jest aliase dla show columns DESCRIBE tbl_name }}} Albo w wersji jak tabela została utworzona (wraz z indeksami, kodowaniem znaków, etc.): {{{#!highlight sql numbers=off SHOW CREATE TABLE tbl_name }}} == Klonowanie tabeli na podstawie istniejącej == {{{#!highlight sql numbers=off CREATE TABLE tbl1 LIKE tbl2; INSERT INTO tbl1 SELECT * FROM tbl2 [WHERE ...]; }}} = Odzyskiwanie backupów = Tutaj jest największy problem. Chodzi głównie o fakt budowania indeksów, sprawdzania odwołań ("''foreign keys''") itd. Można to nieco przyspieszyć. == Wyłączenie kontroli na czas odzyskiwania backupu == Należy podać takie polecenia: {{{#!highlight sql numbers=off SET AUTOCOMMIT=0; SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0; SET SESSION myisam_sort_buffer_size = 256*1024*1024; SET SESSION read_buffer_size = 64*1024*1024; }}} Zaś na końcu wszystko przywrócić: {{{#!highlight sql numbers=off SET AUTOCOMMIT=1; SET UNIQUE_CHECKS=1; SET FOREIGN_KEY_CHECKS=1; COMMIT; }}} == Podział backupów: struktura oraz dane == (!) Podczas tworzenia backupów __warto__ oddzielnie utworzyć backup ze strukturą danych, a oddzielnie z samymi danymi. |
Sztuczki i kruczki związane z mySQL
Sprawdzenie listy procesów
Pokazanie listy procesów w wersji skróconej (początki poleceń SQL):
SHOW FULL PROCESSLIST
Pokazanie listy procesów z pełnymi poleceniami SQL (czasami z bardzo długimi zapytaniami):
SHOW FULL PROCESSLIST
Ustawianie zmiennych
SET [SESSION|GLOBAL] variable=wartość
Naprawianie tabel
Zgodnie z dokumentacją mySQL należy wykonać:
SET SESSION myisam_sort_buffer_size = 256*1024*1024;
SET SESSION read_buffer_size = 64*1024*1024;
SET GLOBAL myisam_max_sort_file_size = 100*1024*1024*1024;
SET GLOBAL repair_cache.key_buffer_size = 128*1024*1024;
CACHE INDEX tbl_name IN repair_cache;
LOAD INDEX INTO CACHE tbl_name;
REPAIR TABLE tbl_name ;
-- ALTER TABLE tbl_name ADD INDEX column_name (column_name);
-- OPTIMIZE TABLE tbl_name
SET GLOBAL repair_cache.key_buffer_size = 0;
Tabele MyISAM oraz indeksy
Dotyczy szczególnie bardzo dużych tabel. Dla operacji INSERT oraz UPDATE warto zdjąć indeksy z takich tabel:
ALTER TABLE tbl_name DISABLE KEYS;
Niemniej trzeba pamiętać, że wykonywanie SELECT-ów z taką ułomną tabelą powoduje bardzo długie zapytania. Można to przywrócić (ale to trwa):
ALTER TABLE tbl_name ENABLE KEYS;
EXPLAIN czyli sprawdzenie co zrobi zapytanie
Aby sprawdzić, jak optymalne jest zapytanie można użyć polecenia EXPLAIN:
EXPLAIN SELECT * FROM `ibf_core_attachments_map` AS `core_attachments_map` WHERE location_key='forums_forums' AND id1=56489 AND id2=1260029 AND id3 IS NULL;
Pokazanie indeksów związanych z tabelą
SHOW INDEXES FROM tbl_name;
Struktura tabeli
Domyślnie pokazanie samych kolumn:
-- describe jest aliase dla show columns
DESCRIBE tbl_name
Albo w wersji jak tabela została utworzona (wraz z indeksami, kodowaniem znaków, etc.):
SHOW CREATE TABLE tbl_name
Klonowanie tabeli na podstawie istniejącej
CREATE TABLE tbl1 LIKE tbl2;
INSERT INTO tbl1 SELECT * FROM tbl2 [WHERE ...];
Odzyskiwanie backupów
Tutaj jest największy problem. Chodzi głównie o fakt budowania indeksów, sprawdzania odwołań ("foreign keys") itd. Można to nieco przyspieszyć.
Wyłączenie kontroli na czas odzyskiwania backupu
Należy podać takie polecenia:
SET AUTOCOMMIT=0;
SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET SESSION myisam_sort_buffer_size = 256*1024*1024;
SET SESSION read_buffer_size = 64*1024*1024;
Zaś na końcu wszystko przywrócić:
SET AUTOCOMMIT=1;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
COMMIT;
Podział backupów: struktura oraz dane
Podczas tworzenia backupów warto oddzielnie utworzyć backup ze strukturą danych, a oddzielnie z samymi danymi.
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
