[FrontPage] | 更新履歴 - サイトマップ - "SQLite" 配下のコンテンツ - 過去を発掘 | [Snap.Shot] |
SQLite |
http://www.hwaci.com/sw/sqlite/
Two times faster than PostgreSQL and MySQL for many common operations
とりあえず、1,000万レコードのベンチくらいは取りたいと思っているのですが(猛烈な需要があるもので)。
(2003-04-28 takano) お話になりませんでした。どうも、想定しているオーダーが2桁くらい違うようだ…。 インデックスの無いテーブルへ、100,000レコードの挿入で既にヒイヒイ言ってます。
とはいえ、使い方がおかしいだけかもしれないので、反証となるデータをお持ちの方は教えてください。 とりあえず追うのやめました。
(2003-07-23 takano) 深町さんも 追ってたみたい 。けど、やっぱり似たような結果になったようです。
(????-??-?? ??????) なんか、DB-WEB PRESSで特集を組んでいて、トランザクションすれば速くなるらしいです。
(2004-01-11 takano) 上はどなた? ちょっと調べてみたけど、 こんなんありました。 コメントどうもです。あとで試してみます。
DB-WEB PRESSじゃなくてWEB+DB Pressです;-)
(2004-08-13 ??????) これが、とりあえずSQLiteの現実的な説明 かな? WEB+DBでした。 :-p
あと、 debianのサイト にある、「本エンジンはきわめて高速ですが、更新・挿入・DML のためには全データベースのグローバルロックを実行します。これは明らかに、複数ユーザのシステム向けではありません。よって用心してください。」という文は、確かに、と思う部分もある。トランザクションによる高速化の事ですね。
sqlite-3.2.1のfunc.cに標準偏差関数を付けました。
あちこちで、エクセルと同じ結果じゃなきゃダメのような書き方がしてあるので、エクセルのヘルプに出てる式を そのまま写したので、エクセルと同じ結果になります。
854,871d853 < static void stdevStep(sqlite3_context context, int argc, sqlite3_value argv){ < StdDevCtx p; < if( argc<1 ) return; < p = sqlite3_aggregate_context(context, sizeof(*p)); < if( p && SQLITE_NULL!=sqlite3_value_type(argv[0]) ){ < p->sum += sqlite3_value_double(argv[0]); < p->sum2 += pow(sqlite3_value_double(argv[0]),2); < p->cnt++; < } < } < static void stdevFinalize(sqlite3_context context){ < StdDevCtx p; < p = sqlite3_aggregate_context(context, sizeof(p)); < if( p && p->cnt>0 ){ < sqlite3_result_double(context,sqrt(((double)p->cntp->sum2 - pow(p->sum,2))/((double)p->cnt*((double)p->cnt -1.0)))); < } < } < 1015d996 < { "stdev", 1, 0, 0, stdevStep, stdevFinalize },