← Back to team overview

sslug-teknik team mailing list archive

Re: MySQL fulltext search

 

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


Follow ups

References