Tema: Re: Pakonsultuokit apie MySQL
Autorius: Laimis
Data: 2010-07-15 17:08:35
NicMC rašė:
> Sveiki,
>
> Pribrendo reikalas kažkiek optimizuoti duombazę, nes jau pradeda
> kabintis į resursus. Taigi, turiu dvi lenteles po kelis laukus
> kiekvienoj. Nuotoliniai taškai ima po vieną įrašą, trina iš vienos
> lentelės, apdoroja ir krauna į kitą lentelę. Duomenys nedideli - pora
> varcharų (10 ir 200 ilgio) ir pora intų. Kadangi įrašų smarkiai
> padaugėjo (iki 400k pirmoj lentoj ir 1,2kk apdorotų duomenų lentoj)
> paprasti selektai "select * from table order by priority ASC, start_time
> ASC LIMIT 1" pradeda gruzint tą duombazę, CPU pradeda valgyt 50-100%
> (CPU ne stebuklas beje). Ką pasiūlytumėt pakeisti, kad kažkiek
> optimizuoti darbą? Išsiselektint viską, susortint ir sudėt atgal su
> griežta numeracija? Prikurt partitionų? Key'jų?
> Selectinti daugiau duomenų ir cachinti lokaliai - ne išeitis, tikrai
> reikia kad imtų po vieną eilutę, t.y. kad kitas nutolęs taškas gautų
> tiksliai sekančią eilutę. Tam tie nutolę taškai lokina teiblą. Gal dar
> ir čia problema?
> Kol kas neieškojau performanco stabdžių, tiesą sakant nelabai ir žinau
> kaip tą padaryt apart programinės įrangos modifikacijų ir stebėjimo
> rezultatų...

A, tai reiškia pas tave MySQL 3.xx? Ne...?

geležis, os, my.(ini|cnf) turinys, toliau:

ANALYZE TABLE 'lentelės';

SHOW TABLE STATUS:
http://dev.mysql.com/doc/refman/5.0/en/show-table-status.html

SHOW INDEXES FROM 'lentelės';
EXPLAIN 'užklausos';

dar toliau:
SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;

ir mysql terminale pagainiojus keletą lėčiausių užklausų keletą (3-5x) 
kartų:
SHOW SESSION STATUS;
SHOW SESSION VARIABLES;

Jei MySQL v5.0.37+, tai ir:
http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html