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