✉️ Saņem šito visu e-pastā. Tā vietā, lai palaistu garām kaut ko no tā, ko es rakstu savā blogā, tagad vari pierakstīties un saņemt e-pastā visu, ko es te rakstu. Tas nav bieži.

← Uz sākumu

Prezentācija: Kā pasliktināt MySQL ātrdarbību

2008. gada 30. janvārī, 12 komentāri

Diezgan jauka prezentācija par to, kā pasliktināt MySQL ātrdarbību. Principā, prezentācija ir par to, kā uzlabot, taču nosaukums izvēlēts klikšķpievilcīgs. Nav jau tā, ka viss tur ir jauns un nezināms, taču diezgan daudz kas šķiet nedzirdēts, liek padomāt, kā arī pavērties tur, kur līdz šim aci metis neesi.

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar problogger.lv

2008. gada 30. janvārī, plkst. 14:17

Laba prezentācija. Prieks, ka dažas pieminētās lietas zināju, tomēr par ip glabāšanu kā INT netiku zinājis gan.

Gravatar artisare

2008. gada 30. janvārī, plkst. 14:28

Jā, tā IP glabāšana man ar likās interesanta....

Gravatar Grrr

2008. gada 30. janvārī, plkst. 16:50

Līdzīgi (intā) var glabāt arī binārus patternus, piemēram tipisks ACL ieraksts:

bez bināriem patterniem:

table ACL ( who int, resource int, read_right boolean, write_right boolean, delete_right boolean)

var apvienot kā table ACL (who int, resource int, rightmask int)

un definēt (piemēram PHP) kodā ka:

$READ_RIGHT=1; // binārs 001 $WRITE_RIGHT=2; // binārs 010 $DELETE_RIGHT=4; // binārs 100

šinī gadījumā piešķirt userim WRITE_RIGHT (neatņemot pārējās) var ar (pseidokods SQL + PHP):

UPDATE ACL SET rightmask = rightmask | $READ_RIGHT WHERE...

izvēlēties userus kam ir gan READ_RIGHT un DELETE_RIGHT:

SELECT * FROM ACL WHERE rightmask & ($READ_RIGHT | $DELETE_RIGHT) > 0

bitmaska ir noderīga fiksēta (vai vispār potenciāli ierobežota) lieluma on/off lauku attēlošanai.

Gravatar Grrr

2008. gada 30. janvārī, plkst. 16:51

upd: atvainojos pirmais UPDATE ir protams ... rightmas | $WRITE_RIGHT

Gravatar null

2008. gada 30. janvārī, plkst. 17:45

[Neko nezinot par MySQL datu tipiem]: IPv6 adreses 128 biti arī salīdīs unsigned int'ā?

Gravatar archeens

2008. gada 30. janvārī, plkst. 17:58

Jā ļoti interesanta lieta, es arī drusku neiebraucu par tām IP lietām.

Gravatar xor

2008. gada 30. janvārī, plkst. 19:17

IP adrese tiiklaa tiek paarsuutiita nevis kaa 192.168.0.1, bet gan kaa integer veertiiba 3232235521 - tapeec pilniigi normaali ir glabaat ip adreses shaadaa (datoram saprotamaakaa) veidaa.

apreekinaashanas piemeers: 192256^3 + 168256^2 + 0 * 256^1 + 1*256^0 =3232235521

liidziigi no integer veertiibaas var dabuut IP adresi "Human Readable" formaataa :)

Gravatar ulzha

2008. gada 31. janvārī, plkst. 00:11

Grrr, pēdējais selekts gan izvēlēsies, kam ir vai nu READ_RIGHT, vai DELETE_RIGHT - ne tikai tos, kam gan viens, gan otrs ;) Nāksies rightmask & ($READ_RIGHT | $DELETE_RIGHT) = ($READ_RIGHT | $DELETE_RIGHT) vai kkā tā.

Par "ierobežota" - http://www.faqs.org/docs/jargon/Z/Zero-One-Infinity-Rule.html

Gravatar ulzha

2008. gada 31. janvārī, plkst. 00:49

Protams, ja optimizācijā spiežam, tad spiežam...

Nesapratu gan, kā tam džekam ar $last_key_where LIMIT pareizi sanāks...

Gravatar Grrr

2008. gada 31. janvārī, plkst. 22:44

ulzha - taisnība, re kā iet, kad steidzas.

par "ierobežota". doma bija pretstatā teiksim rights likšanai tabulas rindās 1 right per row. Bitfields ir ierobežots ar lauka bitu skaitu (un faktiski laikam ja tā padomā ar max lauka garumu, ko SQLā var apstrādāt ar bitwise operācijām), kas ir parasti ĻOTI mazāks par rowu skaitu tabulā. T.i. rowu skaits ir "neierobežotāks", lai gan protams, ja vadās pēc tavas atsauces, nebūt ne neierobežots. :)

Gravatar Knaģis

2008. gada 1. februārī, plkst. 13:08

Grrr, priekš tā iekš MySQL jau ir gatavi tipi SET un ENUM. Kas dara tieši to pašu, tikai vērtības ļauj jau datubāzē sadefinēt.

Gravatar Grrr

2008. gada 2. februārī, plkst. 00:35

Knaģi - mans posts nebija strogo par MySQL, bet drīzāk vispār par vietas konzervēšanu. Bet jebkurā gadījumā, paldies par info.