データベース | Free Style



2007年10月21日

MySQL4でテーブルパーティショニング

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

チックなことをMERGEテーブル(MRG_MyISAM)を使ってやってみたので備忘録。

まず制限事項
・REPLACE構文が使用不可

ついでに圧縮テーブルの制限事項
・読み取り専用になる


構成としては

A
├A000
├A001
└A002

AはMERGEテーブルなので実データはない。
A000がアクティブテーブル、A001,A002はいわゆるアーカイブ。
なので、A001とA002は圧縮テーブルを使用してみる。

A000のデータが一定量を超えたらAXテーブルに移動して、MERGEテーブル
をリビルドするローテートの部分は手動か、別途シェルでも作成する
必要がある。

ローテートサイズは、テーブル構成やサーバ性能にもよるが、データサイズで200Mとか。

(200*1024*1024)/AVG_ROW_LENGTH=ローテートレコード数

以下AAテーブルを上記構成にした時の作業ログ。

mysql>SHOW TABLE STATUS LIKE AA \G

で、テーブル構成を調べられる。

※AAテーブルは500Mbyte、150万レコード、AVG_ROW_LENGTH:140
 分割レコード数は60万

■データ分割 ・A001
mysql>CREATE TABLE A001 SELECT * FROM AA LIMIT 0,600000;
・A002
mysql>CREATE TABLE A002 SELECT * FROM AA LIMIT 600000,600000;
・A000
mysql>CREATE TABLE A000 SELECT * FROM AA LIMIT 1200000,600000;
■テーブル圧縮 cd 「AAテーブルデータが格納されているディレクトリ」
myisampack -v A001
myisamchk -rq --analyze --sort-index A001.MYI
myisampack -v A002
myisamchk -rq --analyze --sort-index A002.MYI

※テーブルを圧縮した後に必ずインデックスをリビルドしておかないとエラーになる。
 参考速度:テーブルデータ:235M、インデックスデータ52Mの場合で37s,18s
 @CPU:Xeon5110*2,Memory:4G,HDD:SAS 15Krpm*2(RAID-1)

圧縮率は約50%程。

■マージテーブル作成
mysql>SHOW CREATE TABLE AA;
でDDL作成して、MERGEテーブル用に修正すると
CREATE TABLE A (........) DEFAULT CHARSET=utf8
ENGINE = MERGE
UNION = (A001,A002,A000) INSERT_METHOD = LAST
となる。

※AUTO_INCREMENTは値指定無しでも自動的に最後尾に追加される

アクティブテーブルが閾値を超えた場合は、A003テーブルにローテート後、
MERGEテーブルを再構築(DROP、CREATE)する。

2007年06月13日

PHP5.1 with MySQL4.1インストール

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

■まずはMySQL突っ込む
めんどくさかったので、公式RPMをおもむろにぶっ込み。
64bitOSなのでRPMも64bit用を使用する。

Server Standard 4.1.22.0

Client Standard 4.1.22.0

Shared libraries Standard 4.1.22.0

Headers and libraries Standard 4.1.22.0

Test suite Standard 4.1.22.0

■PHPをインストールするときに怒られるので無理矢理リンク
ln -s /usr/bin /usr/local/mysql/bin
ln -s /usr/include/mysql /usr/local/mysql/include
ln -s /usr/share/info /usr/local/mysql/info
ln -s /usr/lib64/mysql /usr/local/mysql/lib
ln -s /usr/libexec /usr/local/mysql/libexec
ln -s /usr/share/mysql /usr/local/mysql/share
■GD用にインストール
yum install -y libjpeg-devel.x86_64
yum install -y libpng-devel.x86_64
yum install -y freetype-devel.x86_64
■64bitだとパス通ってくれないので無理矢理リンク
ln -s /usr/lib64/libjpeg.so.62.0.0 /usr/lib/libjpeg.so
ln -s /usr/lib64/libpng.so.3 /usr/lib/libpng.so
ln -s /usr/lib64/libfreetype.so.6.3.7 /usr/lib/libfreetype.so
■準備ができたのでPHPインストール
CFLAGS="-O3 -mtune=nocona -msse3 -I/usr/local/include" \
CXX=gcc CXXFLAGS="-O3 -mtune=nocona -msse3 \
-felide-constructors -fno-exceptions -fno-rtti -I/usr/local/include" \
LDFLAGS="-L/usr/local/lib" \
./configure \
--prefix=/usr/local/php5.1 \
--with-zlib \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--enable-mbstring \
--enable-mbregex \
--enable-gd-native-ttf \
--with-zlib-dir=/usr/local \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local/libpng \
--with-tiff-dir=/usr/local \
--with-freetype-dir=/usr/local \
--with-pdflib=/usr/local \
--with-gettext \
--enable-sqlite-utf8 \
--with-curl=/usr/local/lib \
--with-mysql=/usr/local/mysql \
--with-iconv \
--with-config-file-path=/usr/local/php5.1 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-pear=/usr/local/php5.1/pear


2007年01月10日

ぼちぼち春対策やってます。

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

今は参考書を流し読みしつつ、載ってる問題を解いている感じ。

今読んでいるのは3つ。

テクニカルエンジニア試験 データベース 完全教本〈2007年版〉
新版 データベース技術―情報処理技術者試験対策書
情報処理教科書 テクニカルエンジニア [データベース] 2006年度版

3冊用意した理由は、本によって解説の善し悪しがあるため。
図が欲しい部分でなかったりとかが一番痛い。ま、上記で大体カバーできると思われる。
強いていうなら、新版 データベース技術が一番いいかな。とても親切。

2月後半~3月頭ぐらいにかけて、予想問題集と過去問の追い上げ週間。

2007 データベース予想問題集
3週間完全マスター テクニカルエンジニア(データベース)2006年版の2007年度版

で、たぶん一通り終わる見積もり。

テクニカルエンジニアの出題範囲は
1.コンピュータシステム
2.システムの開発と運用
3.セキュリティと標準化
4.データベース技術
とあって、1~3までは午前問題なので、なんとかなればいいなと。
どっちかっていうと、午前問題のがヤバいんだけど。。。まぁそれも追々。

データベース技術の内訳として、
1.データモデリング
2.正規化理論
3.SQL
4.データベースマネジメントシステム
5.DBMSの選定
6.業務知識

このうち特にヤバいのが、1と2。寧ろ他は実務やってる人間なら苦はないかと。
1はとにかく言葉遊びというか理論の話で正直普段ほとんど使うことがなく、
名前なんてあったのか!?ってのまでちらほら。

ひさびさに学生時代を思い出す…ッッ!!
一番辛いのは使わない知識を覚えないと点数が取れないってこと…
つまり、無駄無駄無駄無駄無駄無駄無駄ッッ!!
学生時代って無駄な物ばっかだったよなぁ…

Oracleやったことない人間がOracleMaster取るよりかは、勉強は楽しい。
簡単という言葉は受かってからにしよう…(マテ

こういうネタ書いてて落ちたら正直恥ずかしいので、自分を崖っぷち
まで追い込んでみようじゃないか!
しかし、最終スキル戦線離脱とかありそうで怖い。スケジュール合わないんだよなぁ…
ホントなら1月中にOracleMasterBronze取る予定が、全然予定は未定なので、
うまいことスケジュール合わせて、事前に試験慣れしないといけないなぁと思うわけで。

適当に試験対策ノートにできればいいなっと。

2007年01月09日

SQLパズル

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

パズルとしてだけでなく、逆引きとして使っても良いかもしれない。

OracleSQLパズル
MySQLパズル
正規表現パズル

最近思うのが、OracleってSQL書くの便利だなぁと。
当たり前っちゃ当たり前なんだけれども。

個人で使用しているDBはMySQLは4.0と4.1の併用していて、
まずはまるのが、

Oracleで通る文法が通らない!
     ↓
MySQL4.1だったら通るのに!
     ↓
結局TemporaryTable使って分割か…orz

と。。。
スマートで、コストが一番安いコードってのは、頭で覚えるより体で慣れろ!
ってことなんだろうか。
今更ながらMySQLのハイパフォ本を読んだけれど、管理者視点では良い本かもしれない。
が、開発視点としては微妙かも。
クエリが遅かったら直せ⇒ハードリソースが足りなかったら増やせ
と、当たり前といえば当たり前のことしか書いてない。
事例中心のデータベース本ってないかなぁ。
おらおらオラクルみたいな。噂通り、名前の割には内容がすごい本でした(笑

2006年11月11日

春に向けて

Yahoo!ブックマークに登録 はてなブックマークに追加 del.icio.usに追加 livedoorクリップへ追加 Buzzurlに追加 POOKMARK Airlinesへ追加 newsingへ投稿 Saafブックマークに追加

今年の春は情報セキュリティを受けようと思いつつも、
見事に仕事とブッキングでブッちするはめに…。

秋は見事に忘れててもうだめぽ。

ま、気を取り直して来年の春対策から考えてみる。
来年の予定は
・春:データベース
・秋:プロジェクトマネージャ
の二本立ての予定。PMは割とおまけです。

データベースは、いろんな意味で押さえておかなくちゃいけない様な
気がするので。まぁ実際使ってるし。

今から春まで勉強とかモチベーションが続くわけもないので、
間にベンダー試験を入れてみることにします。
ということで、オラクルマスター10gのSilverでも取るかーと思ったら
制度改正でBronze取らないとだめっぽいとか。
正直Oracleとか使ったことないんだけどまぁ趣味で取ってみます。
受験料はBronzeで30000円、Silverはプラス15000円。
Goldはさらに10万ぐらいかかるので、自腹じゃ辛いのでSilver目標に。

MySQLクックブック〈VOLUME2〉


で、とりあえず形から入ってみようということでAmazon先生でお買い物。

MySQLクックブック〈VOLUME1〉
MySQLクックブック〈VOLUME2〉
MySQL全機能リファレンス

実践ハイパフォーマンスMySQL

新版 データベース技術―情報処理技術者試験対策書
テクニカルエンジニア試験 データベース 完全教本〈2007年版〉

オラクルマスター教科書 Bronze Oracle Database 10g(DBA10g)編
オラクルマスター教科書 Bronze Oracle Database 10g【SQL基礎I】編


突っ込んだ後に値段に驚愕。
そして、ここまでDB一色になるとは思わなかったw
見ての通り、オラクル対策、春対策、MySQL本。
春対策の2007年版がまだ出ていないようなので、とりあえず出ているものだけ購入。
後は中古で2,3冊ほど。

おまけで、これからデータベースを使う、勉強するという人のための教科書の紹介。
データベース技術教科書―DBMSの原理・設計・チューニング
データベースとはそもそもなんぞや?みたいな疑問は解決するが、
実際にどう使うかまでは書いてない。
但し、原理から設計・チューニングまで概念を網羅していて読みやすいのでお薦め。

実際設計しなきゃいけないってなった時の本としては、
現場で使えるデータベース設計
が良いかも。

現場で使えるSQL 第2版
の旧版は割と愛用しているけど、2版どうしようか悩み中。

本って結構お金かかるなーといつもまとめ買いした時には思ってしまう。






MSN:chrome_fs@hotmail.co.jp
※メッセ専用

800*600 ATOM1.0
RSS1.0 RSS2.0
人気ブログランキング - Free Style