mysqlの文字設定の件再び

enwiki最新版をいつもの手順(mwdumper.jar)で解凍してるんだけど「í」とかが?になっちゃう。お前ら普通の英語ちゃうんか!と思うわけですが、毎度おなじみMySQLの文字設定が間違ってるんだろうなーと

SHOW VARIABLES LIKE ‘char%’; SHOW VARIABLES LIKE ‘collation%’;

で確認したところ所々「cp932」の文字が…。こいつきらい!前にも書いたけど、この世からUTF8以外なくなっちゃえば良いんだよ!

最近メインPC新しくしたからなー。MySQLも入れただけでそのまま使ってたから。で、記憶をたどって手を入れるのもめんどくさいので、

http://514design.jp/2013/01/mysql-character-set/ とか

http://www.gcd.org/blog/2009/09/177/ ここ、

そんで、http://blog.everqueue.com/chiba/2009/08/27/291/ や、

http://forums.mysql.com/read.php?10,633468,633468 を参考に(つーかコピペして)設定。

え、4番目のリンクMySQLの公式フォーラムだけどphpで組んでんのか。まぁ、良いですけど。

で本題は、新メインPCが人生初のデスクトップで、CPUの性能もメモリ容量なども諸々数倍の処理能力アップをしたわけなんですが、何故かMySQLの処理だけがどうも遅い。

旧ノート(thinkpadW500)で1日かかってた処理(enwikiの解凍ね)が1日で1/5程度しか進まない。ほかのことやりながらチョコチョコ調べてたんだけど分からず、だったんだけど、

↑のようにMySQLの文字設定をUTF8に統一したら爆速になったw 1時間たたず6ギガ処理終わってるから、半日で終わる勢い。

こんなのググっても分からないよなー。もうメモリ買い足すしかないかと思ってたもの。

まぁ、明日確認して文字化け直ってない可能性もあるけど。

 

wikipediaデータ利用でハマった件

twitterデータを使って色々するサイトというかサーバは組めて、その経緯を残しておこうと思ったんだけど、この2~3日サーバ自体が不安定ですぐ落ちる。それを直してからまとめるとします。

そんでつぎにwikipediaデータで色々するサイト作ろうとしてるんだけど、まずはローカルのというかサーバでもなく手元のwindowsノートのMySQLに全データ突っ込もうとして四苦八苦。

mwdumper.jarでやるのが良さそうなのでまずは挑戦。やっぱりjavaが好き。

で、2時間ぐらいで終了。DBの中身は空w なんか初っぱなにERROR吐いてるのはわかってたんだけど、無視してた。というか処理止まらないし。このページを参考にcharcter-set指定。

java -jar mwdumper.jar –format=sql:1.5 jawiki-latest-pages-articles.xml.bz2 | mysql -u フガフガ -pホゲホゲ –default-character-set=utf8 wikidb

中身入った。けど色々見てみると何かおかしい。SELECT COUNT(*) FROM text でレコード数見てみると413000しかない。元データは1853286pagesあったのに。

ケツに >aaa.txt 2>&1  付けて処理を記録。ものすごい勢いで流れてっちゃうからね。

途中でエラー吐いてMySQLが終わってるらしい。「ERROR 1366 (HY000) at line 4241」

このページを参考にSTRICTモードを外す。my.iniで指定したんだけど上手くいかず。

mysql> SET @@GLOBAL.sql_mode=”; ってmysql内で設定する。ここで「なぜ指定が効かないのか」を追究していれば次のはまりは無かったのに…

で 結果)1853286pages count(*):1853286

無駄にDBがでかいので必要な部分だけ抜き出して別テーブルへ。
で、ERROR 1206 (HY000): The total number of locks exceeds the lock table size
ググった結果の対処法は「innodb_buffer_pool_sizeを増やす」一生懸命 C:\Program Files\MySQL\MySQL Server 5.6\my.iniを
変更しても反映されず。諦めてJAVAでなんか書くかと思ったが、最後にもう一度my.iniがどっかに隠れてないか検索。
見たことないのが出てきた→C:\ProgramData\MySQL\MySQL Server 5.6\my.ini???
変更したらちゃんと反映。くそ。

さくらインターネットではInnoDBは使用不可!

表題の通り。模擬ECサイトで使用するので作ったテーブル全部がMyIsamエンジンになってたので、「設定間違えたかな」ってテーブル設定ファイル確認したらちゃんと書いてある。
これはさくらの設定だな、と思いmy.cnf探すと見つからない。で、グーグル先生に聞くと「変更の仕方」って答えはなく、「my.cnfはいじれない」ってのしか見つからず。
じゃあInnoDBはどう使うのよ!ってさらに探すと期待した「InnoDBを使う裏ワザ」みたいのは無くて、とどめの公式FAQ「InnoDBは使えません」ってページ発見。非公式FAQでもはっきり不可と書いてある。
これは決定的な使用制限だな。月500円だから仕方ないけどほんとにびっくりした。仕事では使えないですね。良く覚えとこう。