--
--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2011
06.09

SELECT BENCHMARK

Category: mysql
当たり前と言われればそれまでなんだけど、妙に納得してしまったので。

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)


やっぱり割り算は苦手なんですね。うん。




スポンサーサイト
Comment:0  Trackback:0
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によると、

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 しましたとさ。

でも、まだ出てるわけで。

無視でいいという書き込みも見るけど、なんかよくわからないな。自分の場合とは違うようだ。
問題ないなら出ないようにしておくれよ・・・。

おなかすいたのでまた今度。

Comment:0  Trackback:0
2010
12.10

mysql のチューニングをして遊んでみたが原因はDBじゃなさそうなのでただのメモ

Category: mysql
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を調べようとして、

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ではなさそう→(イマココ!)




Comment:0  Trackback:0
2010
10.07

mysql の KEYについてまとめてみるよ PRIMARY KEYの巻(1)

Category: mysql
CREATE TABLE 構文
このあたりを読めばちゃんと書いてあるけどね。

PRIMAY KEY を指定したい場合

続きを読む
Comment:0  Trackback:0
2008
09.17

またやった、mysql でのミス。。

Category: mysql
auto_increment を autoincrement と書いて数分気づかず。

create table hoge(
   moge int,
);


最後のカラムの最後に , をつけてしまう(postgres は通った記憶あり。。すげー昔の話だけど)

同じ名前で index つくろうとする。

そのた typo 多数。

今日はだめな日に違いない!!!


みなさま、お気をつけくださいませ。。
Comment:0  Trackback:0
back-to-top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。