当たり前と言われればそれまでなんだけど、妙に納得してしまったので。
BENCHMARK ステートメントは
via: 6.2. SELECTステートメントおよびその他のクエリの最適化
CPUは
な感じ。
やっぱり割り算は苦手なんですね。うん。
BENCHMARK ステートメントは
明示的な MySQL 関数に関わる問題がある場合は、常に mysqlクライアントでBENCHMARK()関数の計時を行うことができます。 その構文はBENCHMARK(loop_count,表現)。返される値は常に0ですが、mysqlはステートメントの実行にどの程度の時間を要したかを表示するラインをプリントします。
via: 6.2. SELECTステートメントおよびその他のクエリの最適化
CPUは
vendor_id : GenuineIntel
model name : QEMU Virtual CPU version 0.9.1
cpu MHz : 1600.055
cache size : 2048 KB
な感じ。
mysql> SELECT BENCHMARK(100000000,1^1);
+--------------------------+
| BENCHMARK(100000000,1^1) |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (3.38 sec)
mysql> SELECT BENCHMARK(100000000,1+1);
+--------------------------+
| BENCHMARK(100000000,1+1) |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (4.72 sec)
mysql> SELECT BENCHMARK(100000000,1-1);
+--------------------------+
| BENCHMARK(100000000,1-1) |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (4.76 sec)
mysql> SELECT BENCHMARK(100000000,1*1);
+--------------------------+
| BENCHMARK(100000000,1*1) |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (4.95 sec)
mysql> SELECT BENCHMARK(100000000,1%1);
+--------------------------+
| BENCHMARK(100000000,1%1) |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (6.50 sec)
mysql> SELECT BENCHMARK(100000000,1/1);
+--------------------------+
| BENCHMARK(100000000,1/1) |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (46.00 sec)
やっぱり割り算は苦手なんですね。うん。
スポンサーサイト
2011
01.31
[未解決] Checking for corrupt, not cleanly closed and upgrade needing tables..
Category:
mysql
$ sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
エラーが出るので、なんだろうと思って調べてみた。
日本語のブログとか見ると、まぁ大丈夫じゃね?って書き込みが多かったのだが
気になるのでちと色々してみる。
Checking for corrupt, not cleanly closed and upgrade needing tablesによると、
大体の場合は問題ないけど、テーブルを閉じる時に(閉じる時ってなんだろ?)きれいにできてないので、コマンドを打ちなさい。
ハイ。
# cd /var/lib/mysql
# myisamchk */*.MYI
ずらずら出てきてよくわかりませn
テーブル指定で。こんな感じにでます。
ってもいっこずつ見てるわけにもいかないので、
ってしたら、STDERR になんかそれっぽいエラーが。
ってして、再起動してみたけど・・・同じエラー出るなぁ。
別オプション試してみた。
# myisamchk --safe-recover roitems/log.MYI
- recovering (with keycache) MyISAM-table 'roitems/log.MYI'
Data records: 678565
myisamchk: Disk is full writing 'roitems/log.TMD' (Errcode: 28). Waiting for someone to free space... Retry in 60 secs
え、どういうことなのwww
ちょwwww
mysql が超重くなってるのですg(topした限りでは平和だがつながらない)
無理やり kill して起動したら動いたので一安心。
しかし、このテーブル使ってないし・・・。というわけで drop table しましたとさ。
でも、まだ出てるわけで。
無視でいいという書き込みも見るけど、なんかよくわからないな。自分の場合とは違うようだ。
問題ないなら出ないようにしておくれよ・・・。
おなかすいたのでまた今度。
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
エラーが出るので、なんだろうと思って調べてみた。
日本語のブログとか見ると、まぁ大丈夫じゃね?って書き込みが多かったのだが
気になるのでちと色々してみる。
Checking for corrupt, not cleanly closed and upgrade needing tablesによると、
In most cases this is not an error. It's only a system notification notifying you that MySQL is checking the tables during the start up process. However, if your tables were not cleanly closed, you might need to run these commands:
大体の場合は問題ないけど、テーブルを閉じる時に(閉じる時ってなんだろ?)きれいにできてないので、コマンドを打ちなさい。
ハイ。
# cd /var/lib/mysql
# myisamchk */*.MYI
ずらずら出てきてよくわかりませn
テーブル指定で。こんな感じにでます。
# myisamchk rqc2/area.MYI
Checking MyISAM file: rqc2/area.MYI
Data records: 26 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check record links
# myisamchk --recover rqc2/area.MYI
- recovering (with sort) MyISAM-table 'rqc2/area.MYI'
Data records: 26
- Fixing index 1
- Fixing index 2
ってもいっこずつ見てるわけにもいかないので、
# myisamchk */*.MYI > /tmp/checkdb
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table 'roitems/log.MYI' is usable but should be fixed
ってしたら、STDERR になんかそれっぽいエラーが。
# myisamchk --recover roitems/log.MYI
- recovering (with sort) MyISAM-table 'roitems/log.MYI'
Data records: 678565
- Fixing index 1
- Fixing index 2
ってして、再起動してみたけど・・・同じエラー出るなぁ。
別オプション試してみた。
# myisamchk --safe-recover roitems/log.MYI
- recovering (with keycache) MyISAM-table 'roitems/log.MYI'
Data records: 678565
myisamchk: Disk is full writing 'roitems/log.TMD' (Errcode: 28). Waiting for someone to free space... Retry in 60 secs
え、どういうことなのwww
-rw-rw---- 1 mysql mysql 1041597275 2011-01-31 17:34 log.MYD
-rw-rw---- 1 mysql mysql 11030528 2011-01-31 17:35 log.MYI
-rw-r----- 1 root root 221536256 2011-01-31 17:34 log.TMD
-rw-rw---- 1 mysql mysql 8616 2010-04-27 14:27 log.frm
ちょwwww
mysql が超重くなってるのですg(topした限りでは平和だがつながらない)
無理やり kill して起動したら動いたので一安心。
しかし、このテーブル使ってないし・・・。というわけで drop table しましたとさ。
でも、まだ出てるわけで。
無視でいいという書き込みも見るけど、なんかよくわからないな。自分の場合とは違うようだ。
問題ないなら出ないようにしておくれよ・・・。
おなかすいたのでまた今度。
Webサーバ側のスペックをあげても、何も変わらないので、DB側に手を入れてみることにしました。
WebサーバもDBサーバも kvm で作った vmで、OSはCentOS5.5。mysqlは 5.07。
ってまず、query_cache_size が入ってないw
query_cache_size=128M 追加。
キャッシュされるようになったけど、
って、webの表示時間全然かわらねぇ・・・。
freeすると、結構物理メモリが余ってるので、
query_cache_size=256M query_cache_limit=256M に。
webの表示時間が0.2secくらい早くなったけど、うーん、だめだよねー。
ボトルネックになってそうなSQLを調べようとして、
って書いたら
自動で作ってくれお・・・。仕方ないので touch & chown mysql:mysql
ちなみに、long_query_time=0.1 とかすると怒られます。
全部のSQL実行ログを記録したい場合は、
とかそんな感じで。
ええ、何も解決してません・・・。
別途、別サーバから記録されたSQLを実行→一瞬で終わる→ボトルネックはDBではなさそう→(イマココ!)
WebサーバもDBサーバも kvm で作った vmで、OSはCentOS5.5。mysqlは 5.07。
ってまず、query_cache_size が入ってないw
query_cache_size=128M 追加。
キャッシュされるようになったけど、
って、webの表示時間全然かわらねぇ・・・。
freeすると、結構物理メモリが余ってるので、
query_cache_size=256M query_cache_limit=256M に。
webの表示時間が0.2secくらい早くなったけど、うーん、だめだよねー。
ボトルネックになってそうなSQLを調べようとして、
long_query_time=1
log-slow-queries=/var/log/slow.log
って書いたら
/usr/libexec/mysqld: File '/var/log/slow.log' not found (Errcode: 13)
自動で作ってくれお・・・。仕方ないので touch & chown mysql:mysql
ちなみに、long_query_time=0.1 とかすると怒られます。
全部のSQL実行ログを記録したい場合は、
log=/var/log/sql.log
とかそんな感じで。
ええ、何も解決してません・・・。
別途、別サーバから記録されたSQLを実行→一瞬で終わる→ボトルネックはDBではなさそう→(イマココ!)
auto_increment を autoincrement と書いて数分気づかず。
最後のカラムの最後に , をつけてしまう(postgres は通った記憶あり。。すげー昔の話だけど)
同じ名前で index つくろうとする。
そのた typo 多数。
今日はだめな日に違いない!!!
みなさま、お気をつけくださいませ。。
create table hoge(
moge int,
);
最後のカラムの最後に , をつけてしまう(postgres は通った記憶あり。。すげー昔の話だけど)
同じ名前で index つくろうとする。
そのた typo 多数。
今日はだめな日に違いない!!!
みなさま、お気をつけくださいませ。。