[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
Robert Larsen wrote: > Well...vores live database ligger på ssd diske, men lige nu leger jeg > med en kopi på min egen maskine: > robert-desktop:/var/lib/mysql/gamelog $ ls -lh game_log_ng.* > -rw-rw---- 1 mysql mysql 8,7K 2010-04-08 14:34 game_log_ng.frm > -rw-rw---- 1 mysql mysql 771M 2010-04-08 14:35 game_log_ng.MYD > -rw-rw---- 1 mysql mysql 817M 2010-04-08 14:43 game_log_ng.MYI > > > Det er fair nok at det tager 33 sekunder at lave søgningen gennem > indexet, hvis det er dét, der skal til, men hvorfor tager det 3 > sekunder, hvis jeg IKKE bruger index ? Det giver ikke rigtig > mening...synes jeg. > At læse ca. 800MB data i RAM igennem på 3 sekunder er intet problem for en nogenlunde moderne CPU. At læse ca. 800 MB fra disk på 3 sekunder (>250MB/sek) er ikke trivielt med standard diske. Så indtil andet er vist, så ville jeg hælde til den antagelse at dit skan gennem tabellen bliver serviceret af data, som ligger i filsystem-cachen. Så du skal nok have set efter om der overhovedet bliver lavet I/O når du læser fra tabellen (prøv evt. at se på iostat, mens du kører SQL'en) Nu ved jeg ikke lige, om man kan få at vide, hvad der er cachet i filsystem-cachen og jeg ved heller ikke, hvordan man får flushet denne, men en hurtig (!) test kunne være at måle lige efter en reboot. Hvis det viser sig, at de 3 sekunder vokser til noget mere efter en reboot, så er det sandsynligt at det rent faktisk var en læsning fra filsystem-cachen, som du målte på. Et tankeekperiment, hvis nu tiden vokser til måske 10 sekunder efter en reboot, så betyder det at du så læser 80-100MB/sekundet (alt efter hvor parallelt IO og CPU kan gennemføres). Det er ikke utænkeligt med en moderne SATA-disk. Det er selvfølgelig stadig hurtigere end 33 sekunder - men her er det at CPU-arbejdet med fulltext index er MEGET større per række end det at skanne data igennem efter et tekstmønster, Prøv evt. at måle CPU tiden for din database proces når du udfører de to søgninger. Her ville jeg forvente at du ser op mod 33 sekunder for dit fulltext index og tilsvarende 3 sekunder for søgningen uden index. /Martin
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |