Różnice pomiędzy wersjami 1 i 6 (Spinanie 5 wersji)
⇤ ← Wersja 1 z 2016-02-27 00:50:28 →
Rozmiar: 1567
Edytor: wtps0n
Komentarz: *** KREACJA ***
← Wersja 6 z 2016-03-21 23:42:03 → ⇥
Rozmiar: 2563
Edytor: wtps0n
Komentarz: + klonowanie tabel
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 33: Linia 39:
{{{ {{{#!highlight sql numbers=off
Linia 38: Linia 44:
{{{ {{{#!highlight sql numbers=off
Linia 44: Linia 50:
{{{
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 54:
== 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 ...];
}}}



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 ;
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 ...];


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

MysqlTipsTricks (ostatnio edytowane 2018-12-18 22:17:55 przez wtps0n)