走り続けたい社内SEブログ

走り続ける(ようにがんばっている)社内SEの独り言です。

PostgreSQLのデータ型によるテーブルサイズについて

2011-01-23 00:14:17 | 環境
今日は、データ型の話をしたいと思います。

現在、勤め先でお守りしてるDBにPostgreSQL7.4(以下、Postgres)があります。
このPostgresは総レコード数200万件でDBサイズが4GBありますが、前任者不在の状態で引き継いだため不思議仕様が結構あります。

例えば、データ型の定義の仕方。
一例を挙げると、文字データ型が全部character(一部text)だったりします。
ちなみにcharacterで定義してあるので、取得後にTrimして使ってます(._.)。

Postgresの公開文書を見ると、character、varcharに性能の違いはないと記載されています。
(参考URL:http://www.postgresql.jp/document/current/html/datatype-character.html)

また、非常に参考になったのが"Let's Postgres"の「文字列型の使い分け」のページです。
(参考URL:http://lets.postgresql.jp/documents/technical/text-processing/1/)

このページでは、データ型ごとに消費するバイト数が異なるので、それぞれ適したものを使用しましょうと記載してあります。
当たり前のことですが、わかりやすいです。

でも考えてもピンとこなかったので、テスト環境で単純にcharacterとvarcharのサイズの違いを比べてみました。

今回テストに使用したテーブルの概要です。
・レコード数:35万件
・テーブルサイズ:315MB
・全カラム数:49
・文字データ型のカラム数:35
・文字データ型の文字数:599文字(Postgresはバイト数ではなく文字数で定義します)
※ちなみにほとんどの項目が定義した文字数の半分も消費しません

別名でテーブル(characterをvarchar(character varying)に定義して、ダンプしたデータを流し込んでみると、
・テーブルサイズが、315MB→143MBへ減少
・キーとインデックスのサイズが増加(キー:15MB→21MB、インデックス:13MB→15MB)
となりました(どちらもvacuum full、reindex実施)。

テスト結果と参考URLの記事を元に考察すると、
・セットする文字数が変動するものは、varcharの方がサイズを小さくできる(可能性有り)
・固定長のデータをvarcharで格納するとデータサイズが大きくなる可能性有り(キー、インデックスは共に固定長の項目)

非常に驚いたのは、テーブルサイズの減少です。
半分以下です。
これはパフォーマンスの向上を期待できます。
(データ量が減れば、共有メモリ(Shared buffers)を占有する容量が減るので、キャッシュヒット率が上がります)。

また、"Let's Postgres"にはcharacterの型変換による性能劣化の一例が上がっています。
ここら辺も調査して、実際にデータ型の変更を行いたいと思います。

DVDプレーヤ「GHV-DV300K」を購入しました

2011-01-10 20:16:29 | オーディオ
グリーンハウスのガウディGHV-DV300Kを購入しました。
製品紹介ページ:http://www.green-house.co.jp/products/av/bd_dvd/player/ghv-dv300/

電車賃込みで4000位。
価格.comで見ると送料無料で3000程度からあったのですが、今回の連休に急遽入り用になったので徒歩で確保しました。

購入後3日目ですが、せっかくなので使用感などをレビューしたいと思います。

今回この製品を選んだのは、
・サイズがコンパクト(W225×D230×H55(mm))
・映像出力にコンポジット、音声出力に光デジタル音声(角形)がある(もちろんコンポジットだけでも音声は出ます)
・映像入力・音声入力にSDカード、USBメモリが使える(対応フォーマット:MPEG1 / MPEG2 / JPEG / MP3/WMA / FLV 1.0)
です。

購入してみた感想としては、

メリットとして、
・USBメモリが使えるのはやっぱり便利
・安っぽくてもリモコンがついているのはありがたい
・USBメモリから映像を再生すると連続再生してくれる
と思いました。

逆にデメリットと感じたのは、
・作りは安っぽい(子供の時に作ったプラモデルのよう)
・マニュアルが読みづらい(紙の質が悪い&インクが薄い)
・本体のボタンが押しづらい(ボタンがフラットで全面パネルと同化していて、どこを押して良いか分からない)

ちなみに、デメリットで書いた本体ボタンが押しづらい件は、リモコンを使用することで回避しています。
(リモコンのボタンは配置が画一的なため配置が覚えられませんが、物理的な押しづらさはありません)。

今回は、PCで録画した映画を再生しました。
製品紹介ページには、詳細なフォーマットの記載がないので不安でした。
今回成功したフォーマットを記載しておきます。

・MPEG2、720x480、固定ビットレート4M

また、USBメモリはFAT32でフォーマットしています(NTFSではロードできませんでした)。
FAT32だと1ファイルの上限が4GBです。
今回録画した映画は2本あり、いずれも2.5Hありましたので、ファイルサイズが5GB近くになりました。
そのため、録画ソフトで1ファイルの上限を3.8GBに設定(自動分割)して録画しました。
上記メリットで記載しましたが、連続再生してくれます。
これは単純にファイル名でソートしているだけですので、次のファイルが異なる映画でも再生しますが、便利だと思います。

ちなみに、日本語名は表示されませんのでUSBメモリにコピーする際にわかりやすい名前にした方がよいと思います。