2010年11月17日水曜日

[MySQL] merge table

調べる機会があったのでメモ



merge table




読んで字の如く、テーブルを結合します。

肥大化したログテーブルとか、変更・削除はしないけど、残しておかないといけない売上情報を格納しているテーブルとかに使えます

使い方




マージ元(現在レコード数が多数で拡張したいテーブル)をtbl

マージ先(新たに追加するテーブル)をtbl_b

とします



・まず、tblをtbl_aというテーブルにリネームします。


rename table tbl to tbl_a;

・次にtbl_aと同じ構造のテーブルtbl_bを作成します


create table tbl_b (show create table tbl_a)
※エラーが出る場合あshow create分までを実行して確認⇒実行で

・元のテーブルtblを作成。ここで注意すべきはpkeyは定義しない

CREATE TABLE tbl (.....) TYPE=MERGE UNION=(tbl_a, tbl_b) INSERT_METHOD=LAST;



これでtblに対してinsertを行うとtbl_bにデータが格納されます。

見かけ上はtblに入るのでtblにSELECTを実行することでtbl_a,tbl_b両方のデータが参照できます。



tblをdrop⇒tbl_c追加⇒再度tblをcreate

で後から追加も可能です。



[自分へのtodo]

マージ元のテーブルを圧縮できたり、圧縮すると容量が何分の1かになるとか

後は圧縮すると読み出ししかできないとか・・


データの種類によるんだろうけど、レコードの物理削除・論理削除ってのはいつも悩みますねorz

運用の方針で決まるんでしょうが、開発側としては物理削除は避けたい傾向があるような気がします

2010年11月13日土曜日

[サーバー構築] iptables -F の罠

やっちまいました。。。。orz



元の設定が良く分からん鯖で

iptables -F





.....INPUTポリシー全拒否だって



やるときはatとかsleepで現状回帰出来るようにしないとダメですね



皆様もお気をつけください