MySQL on FreeBSDはlinuxthreadを使え
タレコミ by hirofumi
hirofumi 曰く、
去年の9月に書かれたJeremy Zawodnyの記事
http://jeremy.zawodny.com/blog/archives/000203.html
が更新された。
http://jeremy.zawodny.com/blog/archives/000697.html
を見ると、FreeBSDでは、linuxthreadを使ってmysqlをbuildする必要がある。portsを使えば、簡単にインストールできるようだ。 データベースが突然無くなったように見える問題点も解決されているようだ。
linuxthreadを使う事により、FreeBSDのネイティブスレッドの以下の問題点が解決されるという。しかし、FreeBSD5.0を使うべきかFreeBSD4.Xを利用すべきかについては触れられていないようだ。
1スレッドセーフでないDNSlookups
2不公平なカーネルスケジューリング
多くのメールを削除するような激しいI/Oがある場合、関係ないテーブルのselect文などが時間がかかってしまったり、I/Oが終わるまでブロックされてしまう。 不正にI/OのスレッドがCPUを占有しているようだ。
3High Load
4SMPのサポートが無い
FreeBSDのカーネルは1つのプロセスでの2つのスレッドを2つのCPUで同時に走らせることができないため。
5lockを見失う
多くのDELETEが発行されているようなthreadがある場合、単一のテーブルのロックを待つSELECT文は、DELETEが終了するまで待つ。しかし、DELETE文が終わっても、SELECT文は、ロックを待っていて、SHOW PROCESSLISTで見ると、スタックされているように見える。