MySQLが止まる場合がある。
$ mysqladmin processlist
をみると、デッドロックになってしまっている状況が分かる。
参考
http://lists.sourceforge.jp/mailman/archives/senna-dev/2006-September/000346.html
この状況が起こったら、drop table ; create tableをするしかないようだ。
FULLTEXTを頻繁にUPDATE/INSERTする場合の処理速度の関係上、Sennaを離れるわけには行かないので。
$ rpm -qa | grep -i mysql
79:MySQL-python-1.2.0-3.2.2
283:mysqlclient14-4.1.14-4.2
415:perl-DBD-MySQL-3.0002-2.2.2
451:libdbi-dbd-mysql-0.8.1a-1.2.1
567:mysql-devel-5.0.18-2.1
568:php-mysql-5.1.2-5
701:mysql-5.0.18-2.1
737:mysql-connector-odbc-3.51.12-1.2.1
942:mysql-server-5.0.18-2.1
1001:mysqlclient14-devel-4.1.14-4.2
$ sudo rpm -e mysql mysql-server mysql-devel
error: Failed dependencies:
libmysqlclient.so.15 is needed by (installed) perl-DBD-MySQL-3.0002-2.2.2.i386
libmysqlclient.so.15 is needed by (installed) dovecot-1.0-0.beta2.7.i386
libmysqlclient.so.15 is needed by (installed) mysql-connector-odbc-3.51.12-1.2.1.i386
libmysqlclient.so.15 is needed by (installed) libdbi-dbd-mysql-0.8.1a-1.2.1.i386
libmysqlclient.so.15 is needed by (installed) php-mysql-5.1.2-5.i386
libmysqlclient_r.so.15 is needed by (installed) MySQL-python-1.2.0-3.2.2.i386
libmysqlclient_r.so.15 is needed by (installed) mysql-connector-odbc-3.51.12-1.2.1.i386
mysql is needed by (installed) MySQL-python-1.2.0-3.2.2.i386
mysql is needed by (installed) libdbi-dbd-mysql-0.8.1a-1.2.1.i386
$ sudo rpm -e mysql mysql-server mysql-devel perl-DBD-MySQL dovecot mysql-connector-odbc libdbi-dbd-mysql php-mysql MySQL-python
$ sudo rpm -i mecab-0.96-tritonn.1.0.9.i386.rpm
$ sudo rpm -i mecab-ipadic-2.7.0.20070801-tritonn.1.0.9.i386.rpm
$ sudo rpm -i senna-1.1.0-tritonn.1.0.9.i386.rpm
$ sudo rpm -i MySQL-shared-5.0.51a-tritonn.1.0.9.i386.rpm
$ sudo rpm -i MySQL-client-5.0.51a-tritonn.1.0.9.i386.rpm
$ sudo rpm -i MySQL-server-5.0.51a-tritonn.1.0.9.i386.rpm
$ cd /media/disk/Fedora/RPMS
$ sudo rpm -Uhv perl-DBD-MySQL-3.0002-2.2.2.i386.rpm dovecot-1.0-0.beta2.7.i386.rpm mysql-connector-odbc-3.51.12-1.2.1.i386.rpm libdbi-dbd-mysql-0.8.1a-1.2.1.i386.rpm php-mysql-5.1.2-5.i386.rpm MySQL-python-1.2.0-3.2.2.i386.rpm
$ mysql
mysql> ALTER TABLE file_data ADD FULLTEXT INDEX ft USING SECTIONALIZE (title_kakasi,comments_kakasi);
mysql> SELECT MATCH(title_kakasi,comments_kakasi) AGAINST("*D+ *W1:3,2:2 A5EDA5EA B5F0C6FD") AS score FROM file_data WHERE MATCH(title_kakasi,comments_kakasi) AGAINST("*D+ *W1:3,2:2 A5EDA5EA B5F0C6FD" IN BOOLEAN MODE) ORDER BY score DESC LIMIT 10;
Empty set
# 問題点
# 1) どうも *D+ と *W を並行して使えないようだ.
# 2) また,*D+を取り除いてみたが,scoreが整数の値しか返ってこない.
# 結論
# SECTIONALIZEは使用せず,scoreに関しては従来のMySQLに任せる
#
# ALTER TABLE file_data ADD FULLTEXT ft_file_data_comments_kakasi (comments_kakasi);
# ALTER TABLE file_data ADD FULLTEXT ft_file_data_title_kakasi (title_kakasi);
# ALTER TABLE img_data ADD FULLTEXT ft_img_data_comments_kakasi (comments_kakasi);
# ALTER TABLE img_data ADD FULLTEXT ft_img_data_title_kakasi (title_kakasi);
# ALTER TABLE yourfilehost_data ADD FULLTEXT ft_yourfilehost_data_comments_kakasi (comments_kakasi);
# ALTER TABLE yourfilehost_data ADD FULLTEXT ft_yourfilehost_data_title_kakasi (title_kakasi);
# ALTER TABLE tag ADD FULLTEXT ft_tag_kakasi (kakasi);
ANo.2
MySQLを渡すときの基本構文。重要。
http://kikitai.teacup.com/qa3663217.html
高速化
http://www.cdl.im.dendai.ac.jp/~arai/wiki/wiki.cgi?page=MySQL%A4%CE%B9%E2%C2%AE%B2%BD
SQL> alter table hoge drop index myText;
SQL> ...全件ロード処理...
SQL> alter table hoge add fulltext(myText);
cf.http://www.tatamilab.jp/rnd/archives/000389.html
ローカルでINSERT/UPDATEするスクリプトを走らせる時は,必ずdropしておくこと。
SQL> show columns from file_data;
その他の情報提示手法を含めて以下のリンクを参照。
cf. http://dev.mysql.com/doc/refman/4.1/ja/show.html
SQL> ALTER TABLE site_list MODIFY time DATETIME;