Server: 2007年1月アーカイブ

SHOWやDESCでは見づらいのでSQL文で定義を見たい、でもデータは不要…と、phpMyAdminがあればそんなことは任せればよいのだが実環境では用意されていないことのほうが多い。そこでどうやって定義を抽出しているのか調べたら、phpMyAdminのインポート・エクスポートはmysqldumpをラッピングしているという情報を得た。ということはmysqldumpを使えば良いと言う事。結局それか…と思いデータを出力しないオプションを探す。

> mysqldump -h[ホスト] -u[ユーザ名] -p[パスワード] -d [データベース名] [テーブル名]

でOKだった。

ソケットの数のOS上限

| | コメント(0)

 オンラインゲームを作るに当たり全く考えてなかった問題があった。OSレベルでのファイルオープン数制限である。ソケットもOSレベルではファイルポインタとして扱われている為この制限にかかる。

C言語のプログラミングレベルであればFD_SETSIZEの定義を変えれば良いがそれだけではOSの制限は超えられない。調査方法は下記のコマンドを実行する。

Linuxの場合
# ulimit -a

この結果Linux系はデフォルトが1プロセス当たり1024個までのようだ。
これは少なすぎなのでRedHat系であれば/etc/security/limits.confに上限値を
入れてリログすると適用されるっぽい。

FreeBSDの場合
# limit
cputime unlimited
filesize unlimited
datasize 524288 kbytes
stacksize 65536 kbytes
coredumpsize unlimited
memoryuse unlimited
vmemoryuse unlimited
descriptors 7264
memorylocked unlimited
maxproc 3632
sbsize unlimited

FreeBSDは7264が上限になってた、これだけあれば大丈夫かな。

そしてFreeBSDの場合は

 以前からMySQL接続を二重に張れない問題が残っていてどうしたらC言語のようにできるのだろうと思っていたら今のMySQLではUSE等で切り替えなくてもDB名を指定して操作できる事を思い出しました。

今までは
USE test_db1;

SELECT * FROM table1;

USE test_db2;

SELECT * FROM table1;

のようにしていましたが、これは下記の様に書き換えられます。

SELECT * FROM test_db1.table1;

SELECT * FROM test_db1.table2;

しかもこの方法なら2つのDB内テーブルの結合もできるのでは?

MySQLの文字コードって

| | コメント(0)

mysqldumpを利用したバックアップを行っててふと気になったのが、エディタで開いてみるとどの文字コードにも適合しない得体の知れない文字を吐いていて何故か同じ環境のMySQLには復元可能だったりする。
ネットで調べるとlatin1にするだとかいろいろあるけど効果なし。インストールしたときのdefault-chara-setが未設定というのが問題なのか?
逆にphpMyAdminだとうまく出力してくれるのだがこの違いどこかで解説してるとこないかなぁ。

このアーカイブについて

このページには、2007年1月以降に書かれたブログ記事のうちServerカテゴリに属しているものが含まれています。

前のアーカイブはServer: 2006年11月です。

次のアーカイブはServer: 2007年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.1