プロフィール

 

名前
ぶりぶり
職業
貧しいスクリプター
役職
名ばかり管理職
 

アーカイブ

 
 

最近のコメント

 

ああ~2009/6/27 3:44
[ 自分 ] さん

 

トランザクション(SQLite)

 
よく言われていることですが、
SQLiteでは自動的にトランザクション(とは言ってもファイルロックみたいな感じですけど…)
するので、
複数のINSERTを実行する時に1クエリーごとトランザクション(+コミット)が働き非常に遅くなるという話。

ので、

複数のクエリーを実行する場合は、明示的にトランザクションをかける必要があるのです。

というのは話には聞いていましたが、たまたま6000行のINSERTが必要になったので、ついでに速度テスト

結果は約20倍
ちなみに0.9秒(明示的トランザクション)と20.2秒(自動トランザクション)

 

char、varcharのMAX_LEN

 
ぼ~っとしてるとついやってしまう…。
char(9)は9文字の固定長文字列ですが、何かの本にchar(n)はn*MAX_LEN byteの文字列が格納できると書いてあった。

utf8のキャラクターセット(MAX_LEN=3)だと
'123456789' = 9文字 = 9byte
'あいうえおかきくけ' = 9文字 = 27byte
でしょ。
1byte文字の場合は、まだ入るじゃん!
と思って
'123456789123456789123456789' = 27文字 = 27byte
で、入れると
'123456789'になる…。

au:601にゃんでぇ。本の嘘つきぃ
結局、n文字ってコトね。

でもさぁ、固定長文字列だからデータが9byteか27byteかって大きな違いじゃない?固定長でしょ!
データは27byte分確保してるのにあまるじゃん

実害として、ブログのタイトルでデザイン的に「日本語20文字だな」って思ってvarchar(20)にして、←(余裕を持てよ)
たまたま、1バイト文字(英語)だけのタイトルを付けようとしたら切られた…。
 

SQLite

 
個人的に推奨。

ブログ程度のデータベースにMySQL?大げさな…

今後、ブームの予感

手軽さがいい

データベースを使わない際はCSVとかTSV形式でデータを保存してたりしましたが、カンマなんてよく使うでしょ。TSVはお気に入りで、今でも簡単なデータファイル形式として使ってる

両者の欠点は「改行」を含むデータ。<br />とかに変換してもいいんだけど、生データを見るとカッコワルイし