組み込み型データベース SQLite について語るスレッドです。
SQLite
http://www.sqlite.org/
・C/C++ API
http://www.sqlite.org/c3ref/intro.html
・Syntax
http://www.sqlite.org/lang.html
・Limits
http://www.sqlite.org/limits.html
・Support
http://www.sqlite.org/support.html
探検
SQLite Part.10
■ このスレッドは過去ログ倉庫に格納されています
2012/08/16(木) 21:54:16.20ID:???
579NAME IS NULL
2017/01/07(土) 20:17:03.63ID:??? AとBを結合すりゃいいんじゃね
580NAME IS NULL
2017/01/07(土) 21:29:52.61ID:???581NAME IS NULL
2017/01/07(土) 22:57:02.36ID:??? SQLite Release 3.16.2 On 2017-01-06
http://www.sqlite.org/releaselog/3_16_2.html
http://www.sqlite.org/releaselog/3_16_2.html
582NAME IS NULL
2017/01/07(土) 22:59:43.97ID:??? いっぱいでるぅ
583NAME IS NULL
2017/01/08(日) 08:53:31.25ID:??? >>579, 580
やり方色々あるんですね。
とても参考になりました。
ありがとうございます。
ところで、
>> In の右辺が select なら exist
って具体的にはWHERE句にどう書くのでしょうか?
やり方色々あるんですね。
とても参考になりました。
ありがとうございます。
ところで、
>> In の右辺が select なら exist
って具体的にはWHERE句にどう書くのでしょうか?
584NAME IS NULL
2017/01/08(日) 11:26:10.96ID:??? SELECT * FROM HOGE
WHERE EXISTS(SELECT * FROM FUGA WHERE HOGE.A = FUGA.A AND HOGE.B = FUGA.B)
WHERE EXISTS(SELECT * FROM FUGA WHERE HOGE.A = FUGA.A AND HOGE.B = FUGA.B)
585NAME IS NULL
2017/01/09(月) 12:41:36.74ID:???586NAME IS NULL
2017/01/09(月) 15:11:12.56ID:??? >>584
横からですが、とん
横からですが、とん
587NAME IS NULL
2017/02/08(水) 09:16:30.67ID:ib/65+FH explainの見方がよくわからないのですが、
よくわからない人は、どこ見てそれがいいSQLであると判断すればいいですか?
ステップ(addr)の数が少なければ少ないほどいいってことでしょうか?
アプリケーションから実行速度を測る事はできるのですが、
純粋なSQLの実行速度を知りたいのですが、何か方法ありますか?
よくわからない人は、どこ見てそれがいいSQLであると判断すればいいですか?
ステップ(addr)の数が少なければ少ないほどいいってことでしょうか?
アプリケーションから実行速度を測る事はできるのですが、
純粋なSQLの実行速度を知りたいのですが、何か方法ありますか?
588NAME IS NULL
2017/02/08(水) 12:43:05.00ID:??? 複数行insertでprepared statementを使おうとしたら999制限に引っかかって挿入出来ません
何か良い解決策はありませんか?
何か良い解決策はありませんか?
589NAME IS NULL
2017/02/08(水) 14:08:11.63ID:??? SQLITE_LIMIT_VARIABLE_NUMBER 変更するとか?
590NAME IS NULL
2017/02/09(木) 19:02:21.92ID:7X6c6aZo591NAME IS NULL
2017/02/14(火) 02:29:06.57ID:lj49aSQw592NAME IS NULL
2017/03/18(土) 06:19:56.54ID:??? SQLiteに保存する文字コードは、UTF-8が基本ですか?
SJISを保存すると問題おきますでしょうか?
SJISを保存すると問題おきますでしょうか?
593NAME IS NULL
2017/03/18(土) 09:45:20.02ID:???594NAME IS NULL
2017/04/11(火) 17:38:40.65ID:??? SQLiteにSJISで保存すると何か問題が起きるんですか?
ホントなら具体例を教えてください。
ホントなら具体例を教えてください。
595NAME IS NULL
2017/05/23(火) 22:36:11.99ID:???596NAME IS NULL
2017/05/24(水) 07:42:43.39ID:??? >>592
DBのエンコーディングがutf8かutf16ってだけで
同じテーブルに別々の文字コード入れようがsjisで格納しようが別に不具合は起きない
当然そのままだと文字化けを起こす可能性があるが
それをどうするかはアプリケーション側の問題
DBのエンコーディングがutf8かutf16ってだけで
同じテーブルに別々の文字コード入れようがsjisで格納しようが別に不具合は起きない
当然そのままだと文字化けを起こす可能性があるが
それをどうするかはアプリケーション側の問題
597NAME IS NULL
2017/05/24(水) 21:23:46.06ID:???598NAME IS NULL
2017/05/25(木) 10:39:50.92ID:??? どのDBもクライアントのエンコーディングは意識しないとだけど
それはDBのエンコーディングとは別の話
それはDBのエンコーディングとは別の話
599597
2017/05/25(木) 18:32:52.30ID:??? >>598
ごめんちょっと言い方が足りなかった。
マルチバイト文字列のSQL文を、DB側が正しく構文解析してるれるかなぁ・・・という質問でした。
たとえば、SELECT... WHERE xxx like '〇〇〇%';
というSQL文の場合、「〇〇〇」を正しく解釈し、次の文字の「%」を認識してくれるのかなぁという心配です。
〇がどんなマルチバイト文字でも大丈夫なのかな?
ごめんちょっと言い方が足りなかった。
マルチバイト文字列のSQL文を、DB側が正しく構文解析してるれるかなぁ・・・という質問でした。
たとえば、SELECT... WHERE xxx like '〇〇〇%';
というSQL文の場合、「〇〇〇」を正しく解釈し、次の文字の「%」を認識してくれるのかなぁという心配です。
〇がどんなマルチバイト文字でも大丈夫なのかな?
600NAME IS NULL
2017/05/25(木) 18:44:27.94ID:??? うーん、、そのつもりで答えたんだけどな
クライアントの環境によるだろうけど、固定文字コードかロケールで切り替えるようになってるはずで
そのコードに沿ってないとSQL解釈も期待どおりにならない可能性はあるね
クライアントの環境によるだろうけど、固定文字コードかロケールで切り替えるようになってるはずで
そのコードに沿ってないとSQL解釈も期待どおりにならない可能性はあるね
601NAME IS NULL
2017/05/25(木) 18:47:20.11ID:??? ちなみにクライアント側が文字コードあってれば
サーバの文字コードに変換するのはクライアントの役目
通常サーバ側の文字コードはクライアントから切り替えられるようになってるので問題ないが
SQLiteの場合サーバ側の処理もクライアントがやるからそれだけ合わせとけばいいかと
サーバの文字コードに変換するのはクライアントの役目
通常サーバ側の文字コードはクライアントから切り替えられるようになってるので問題ないが
SQLiteの場合サーバ側の処理もクライアントがやるからそれだけ合わせとけばいいかと
602NAME IS NULL
2017/05/26(金) 08:02:08.57ID:a747thsW603NAME IS NULL
2017/06/09(金) 02:35:11.50ID:kmOrKnhg604NAME IS NULL
2017/06/09(金) 19:27:52.36ID:HI+OVZBi 日本と海外のユーチューバーは収入の仕組みが違う?!どっちが儲かるか?
http://youtube-youtuber.com/360.html
日本の従来型のユーチューバーは、広告収入をメインの収入源としています
1.動画にのせる広告(動画広告+画像広告)からの報酬や
2.スポンサー収入(企業からの依頼を受けて商品を紹介)
海外のユーチューバーの傾向として、広告収入ではなく、自分のビジネスを
メインにすることによって広告収入を遥かに超える収入を叩き出しています。
例えば、beauty guru(美のカリスマ)と謳われる、ユーチューバーのミシェル・ファンは
広告収入は1800万得ていますが・・他方で美容化粧品会社Ipsyを立ち上げて、
年収1億ドル(約110億円)を売り上げました。
彼女は「メイクのチュートリアル動画」を投稿していますが、動画の中で自分の会社の商品を
使っているんです。
そしてその中で使った商品を、online shopで買える仕組みにしています。
他人の商品を紹介して、そこから「おこぼれ」を貰うより、自分の商品を売った方が
遥かに儲かりますからね。
リンジー・スターリングは踊りながら、バイオリンを演奏する、アーティストですが・・・
彼女の場合も、あくまでも動画を投稿するのは、自分のビジネスである、
ツアーチケットやアルバムの販売のためなのです。
http://youtube-youtuber.com/360.html
日本の従来型のユーチューバーは、広告収入をメインの収入源としています
1.動画にのせる広告(動画広告+画像広告)からの報酬や
2.スポンサー収入(企業からの依頼を受けて商品を紹介)
海外のユーチューバーの傾向として、広告収入ではなく、自分のビジネスを
メインにすることによって広告収入を遥かに超える収入を叩き出しています。
例えば、beauty guru(美のカリスマ)と謳われる、ユーチューバーのミシェル・ファンは
広告収入は1800万得ていますが・・他方で美容化粧品会社Ipsyを立ち上げて、
年収1億ドル(約110億円)を売り上げました。
彼女は「メイクのチュートリアル動画」を投稿していますが、動画の中で自分の会社の商品を
使っているんです。
そしてその中で使った商品を、online shopで買える仕組みにしています。
他人の商品を紹介して、そこから「おこぼれ」を貰うより、自分の商品を売った方が
遥かに儲かりますからね。
リンジー・スターリングは踊りながら、バイオリンを演奏する、アーティストですが・・・
彼女の場合も、あくまでも動画を投稿するのは、自分のビジネスである、
ツアーチケットやアルバムの販売のためなのです。
605NAME IS NULL
2017/06/18(日) 17:51:34.06ID:??? ついにV4が来てしまったようだな。
これでDB界のパワーバランスが変わる。
これでDB界のパワーバランスが変わる。
606NAME IS NULL
2017/06/18(日) 19:16:36.85ID:??? え?
まだ3.19じゃないの?
まだ3.19じゃないの?
607NAME IS NULL
2017/06/18(日) 21:32:39.55ID:??? https://sqlite.org/src4/doc/trunk/www/index.wiki
まだ作業中なのかな。でもじきに出るだろう
まだ作業中なのかな。でもじきに出るだろう
608NAME IS NULL
2017/06/18(日) 22:08:31.74ID:??? (゚∀゚ 三 ゚∀゚)、
609NAME IS NULL
2017/06/21(水) 22:57:56.93ID:4A99RJhE >>605
おぉ!
おぉ!
610NAME IS NULL
2017/06/22(木) 04:27:42.58ID:??? よしオラクルを空売りしよう!
611NAME IS NULL
2017/06/22(木) 23:52:30.19ID:??? 4だとZIPVFSが無償で使えたりしないかなw
612NAME IS NULL
2017/06/23(金) 20:53:47.60ID:??? numeric 型が気になるなぁ
613NAME IS NULL
2017/06/26(月) 05:02:46.43ID:??? おぉ!
614NAME IS NULL
2017/07/07(金) 19:31:51.69ID:??? 4番ファースト
615NAME IS NULL
2017/07/08(土) 09:01:20.67ID:P1W8iwhy >>605
ストアドプロシージャとか使える?
ストアドプロシージャとか使える?
616NAME IS NULL
2017/08/02(水) 07:53:36.80ID:ASDOYwkw617NAME IS NULL
2017/08/11(金) 08:00:27.63ID:??? ファイルシステムよりも35%高速に
ttp://postd.cc/faster-than-fs/
ttp://postd.cc/faster-than-fs/
618NAME IS NULL
2017/08/12(土) 00:57:24.03ID:??? なんだと
619NAME IS NULL
2017/08/29(火) 18:43:15.91ID:??? sqliteだと、managementstudioみたいなツールは何が使い勝手いいですか?
620NAME IS NULL
2017/08/29(火) 21:14:17.01ID:OhjuD9IQ621NAME IS NULL
2017/08/29(火) 22:18:32.51ID:??? >>620
アドオンすか・・インストール型とかイメージしてました
アドオンすか・・インストール型とかイメージしてました
622NAME IS NULL
2017/08/29(火) 22:18:48.87ID:??? >>620
アドオンすか・・インストール型とかイメージしてました
アドオンすか・・インストール型とかイメージしてました
623NAME IS NULL
2017/08/29(火) 23:12:13.61ID:??? SQLiteStudioまあまあ
SQLite以外を扱う必要がなければ十分
見た目もManagement Studioに近い
SQLite以外を扱う必要がなければ十分
見た目もManagement Studioに近い
624NAME IS NULL
2017/08/31(木) 13:06:37.85ID:FED7sUEP いるいるいるよね貝社員
625NAME IS NULL
2017/08/31(木) 15:54:23.53ID:??? 貝獣物語
626NAME IS NULL
2017/09/21(木) 14:38:04.47ID:CPk5Opit MATCHだけど
SELECT * FROM vtbl AS v WHERE v MATCH 'foo';
だとvなんてカラムねーよとエラーになる
SELECT * FROM vtbl WHERE vtbl MATCH 'foo';
ならOK
なんか納得いかない
vtblはvirtual tableです
SELECT * FROM vtbl AS v WHERE v MATCH 'foo';
だとvなんてカラムねーよとエラーになる
SELECT * FROM vtbl WHERE vtbl MATCH 'foo';
ならOK
なんか納得いかない
vtblはvirtual tableです
627NAME IS NULL
2017/10/02(月) 01:35:45.11ID:??? MATCHで指定するのはテーブルじゃなくてカラムだと思うんだが
628NAME IS NULL
2017/10/02(月) 02:46:34.33ID:??? >>627
if the identifier is the name of the FTS table itself, then the MATCH operator evaluates to true for each row of the FTS table for which any column contains the search term
https://www.sqlite.org/fts3.html#simple_fts_queries
if the identifier is the name of the FTS table itself, then the MATCH operator evaluates to true for each row of the FTS table for which any column contains the search term
https://www.sqlite.org/fts3.html#simple_fts_queries
629NAME IS NULL
2017/11/04(土) 19:10:59.78ID:???630NAME IS NULL
2017/11/08(水) 11:10:42.96ID:??? SQLite4終了?
631NAME IS NULL
2017/11/08(水) 11:43:00.04ID:??? >>630
どういうこと?
どういうこと?
632NAME IS NULL
2017/11/08(水) 12:18:11.09ID:??? >>631
開発に失敗したらしい
開発に失敗したらしい
633NAME IS NULL
2017/11/08(水) 13:25:37.98ID:??? https://sqlite.org/src4/info/c0b7f14c0976ed5e
> All development work on SQLite4 has ended. The experiment has concluded.
> All development work on SQLite4 has ended. The experiment has concluded.
634NAME IS NULL
2017/11/08(水) 15:34:14.65ID:??? >>633
肝心なところが引用できてないぞ
肝心なところが引用できてないぞ
635NAME IS NULL
2017/11/08(水) 15:47:10.99ID:??? 君が肝心と思ったところは君が引用すればいいと思うよ
636NAME IS NULL
2017/11/08(水) 15:47:57.57ID:??? SQLite4は元々リリースするつもりは無かったのか?
637NAME IS NULL
2017/11/08(水) 16:06:21.39ID:??? >>635
英語読めないのか
英語読めないのか
638NAME IS NULL
2017/11/08(水) 16:16:04.08ID:??? >>637
はい、そうです。
はい、そうです。
639NAME IS NULL
2017/11/11(土) 20:56:08.93ID:??? 初歩的な質問なのですが、
SQLiteのテーブルにboolean型のカラムを作って
C#のプログラム側から参照してbool型の変数に代入しようとすると
型が違うと怒られます
sqliteのboolean型はbool型に入れられないのでしょうか
SQLiteのテーブルにboolean型のカラムを作って
C#のプログラム側から参照してbool型の変数に代入しようとすると
型が違うと怒られます
sqliteのboolean型はbool型に入れられないのでしょうか
640NAME IS NULL
2017/11/11(土) 21:23:40.52ID:???641NAME IS NULL
2017/11/11(土) 21:46:12.74ID:???642NAME IS NULL
2017/11/11(土) 21:51:16.84ID:???643NAME IS NULL
2017/11/11(土) 22:08:14.79ID:???644NAME IS NULL
2017/11/18(土) 01:48:42.44ID:F7zPqW66 >>636
元々実験バージョンだったはず
元々実験バージョンだったはず
645NAME IS NULL
2017/11/18(土) 12:09:57.30ID:??? なんのための実験?
646NAME IS NULL
2017/11/24(金) 19:36:24.57ID:??? 質問です。
ATTACHをすると異常に遅くなるのですが、これは最新バージョンで直ってますか?
或いは何らかの対策がありますか?
[環境]
PHP7.1.8+SQLite3.15.1(今年9月時点でのxampp最新版)
SQLite3.21.0のDLLをDLして差し替えたが動作せず
[状況]
・openよりもattachの方が優先順位が低いのか、追い越されている時がある。
・基本的にシーケンシャルにリクエストをしている。
(30秒ごとにキューに溜まったリクエストを順次送信する。
前リクエストの結果を受け取ってから0.1秒待って次リクエスト発行、これでシーケンシャル。
ただし30秒でキューが掃けない場合、上に被せるので、一時的に2並列になるときがある。)
・連続した場合、2回目以降は早い(ことが多い)。1回目は6秒程度、2回目以降は0.1-0.2秒程度で終了する。
・Timeout設定は5秒だが25秒かかっても問題なく正常終了する(タイムアウトしない)
・用途は掲示板で、リクエストはスレ立て/投稿/閲覧/スレ落ちを混ぜてテスト中。
・試行錯誤した結果、ATTACHしただけで遅いようだと判明した(ATTACHしたDBを触らずとも遅い)
[推定]
連続した場合には早いので、EXCLUSIVEロック待ちだと推定している。
ただしリクエストはほぼ全部シーケンシャルなので、本来はロック待ち自体がおかしい。
なお以下仕様のため、sqlite_masterの合成に時間がかかっているのか?とも思い、
全部mainをつけてみたが変化なし。(連続した場合に早いのでこの線もおかしいが)
> If the name of the table is unique across all attached databases and the main and temp databases, then the schema-name prefix is not required.
> http://www.sqlite.org/lang_attach.html
今のところ納得できる理由(原因)が見つかっておらず、対策が出来ていません。これについて、
対策方法(最新バージョンで直っているのならそれでよし)をご存知であればご教授ください。
最新版をPHPで試す方法はPHPのスレで聞いてみます。
ATTACHをすると異常に遅くなるのですが、これは最新バージョンで直ってますか?
或いは何らかの対策がありますか?
[環境]
PHP7.1.8+SQLite3.15.1(今年9月時点でのxampp最新版)
SQLite3.21.0のDLLをDLして差し替えたが動作せず
[状況]
・openよりもattachの方が優先順位が低いのか、追い越されている時がある。
・基本的にシーケンシャルにリクエストをしている。
(30秒ごとにキューに溜まったリクエストを順次送信する。
前リクエストの結果を受け取ってから0.1秒待って次リクエスト発行、これでシーケンシャル。
ただし30秒でキューが掃けない場合、上に被せるので、一時的に2並列になるときがある。)
・連続した場合、2回目以降は早い(ことが多い)。1回目は6秒程度、2回目以降は0.1-0.2秒程度で終了する。
・Timeout設定は5秒だが25秒かかっても問題なく正常終了する(タイムアウトしない)
・用途は掲示板で、リクエストはスレ立て/投稿/閲覧/スレ落ちを混ぜてテスト中。
・試行錯誤した結果、ATTACHしただけで遅いようだと判明した(ATTACHしたDBを触らずとも遅い)
[推定]
連続した場合には早いので、EXCLUSIVEロック待ちだと推定している。
ただしリクエストはほぼ全部シーケンシャルなので、本来はロック待ち自体がおかしい。
なお以下仕様のため、sqlite_masterの合成に時間がかかっているのか?とも思い、
全部mainをつけてみたが変化なし。(連続した場合に早いのでこの線もおかしいが)
> If the name of the table is unique across all attached databases and the main and temp databases, then the schema-name prefix is not required.
> http://www.sqlite.org/lang_attach.html
今のところ納得できる理由(原因)が見つかっておらず、対策が出来ていません。これについて、
対策方法(最新バージョンで直っているのならそれでよし)をご存知であればご教授ください。
最新版をPHPで試す方法はPHPのスレで聞いてみます。
647NAME IS NULL
2017/11/25(土) 14:28:33.17ID:??? >>646
自己解決しました。
ATTACHの速度が対象DBのtable数にかなり依存するため、
ATTACHするとその場でsqlite_masterの合成をするのだと推定しました。
従って、ATTACH順を変更することにより改善できます。
今回は3つのDBを同時に扱うため、3C3の6通りでしかなく、速いのを選ぶことにしました。
なお、この実装がよいのかは若干疑問です。
通常はATTACH対象をさほどゴリゴリやらないので、
合成ではなく直列(カスケード)にして、その都度順に引いた方が速いと思われます。
或いは、合成/直列を選択するpragmaがあればよいのですが、これもないようです。
これらの問題のため、最新版等では改善している可能性もあります。(試せていません)
何か対応しようとしてくださった方が居ましたら、ありがとうございました。
自己解決しました。
ATTACHの速度が対象DBのtable数にかなり依存するため、
ATTACHするとその場でsqlite_masterの合成をするのだと推定しました。
従って、ATTACH順を変更することにより改善できます。
今回は3つのDBを同時に扱うため、3C3の6通りでしかなく、速いのを選ぶことにしました。
なお、この実装がよいのかは若干疑問です。
通常はATTACH対象をさほどゴリゴリやらないので、
合成ではなく直列(カスケード)にして、その都度順に引いた方が速いと思われます。
或いは、合成/直列を選択するpragmaがあればよいのですが、これもないようです。
これらの問題のため、最新版等では改善している可能性もあります。(試せていません)
何か対応しようとしてくださった方が居ましたら、ありがとうございました。
648NAME IS NULL
2017/11/25(土) 15:52:23.93ID:??? >>647
いやいやなになに
いやいやなになに
649NAME IS NULL
2017/11/25(土) 16:20:09.78ID:??? >>647
ついでに続報を言うと、
ATTACHが遅くなるのはシステムキャッシュが無効(容量が足りない)時だけのようです。
合成自体は十分速く、
断片化したDB内のsqlite_masterのHDDからの読み出しに時間がかかっているようです。
だからまあ、現在(SQLite 3.15.1)の実装で問題ない、ということにもなりますが、、、
私の環境では、
RAMに十分空きがある(システムキャッシュにヒットする)場合には、
ATTACHは0.04-0.06秒程度で終了します。
RAMを使い尽くしている(システムキャッシュに十分な容量がない)場合には、
ATTACHだけで2-6秒程度かかり、これはVACUUM等で改善します。
また、ATTACHの順番を変えると何となく雰囲気が変わります。
(ただしこの結果は少し矛盾してますが)
ついでに続報を言うと、
ATTACHが遅くなるのはシステムキャッシュが無効(容量が足りない)時だけのようです。
合成自体は十分速く、
断片化したDB内のsqlite_masterのHDDからの読み出しに時間がかかっているようです。
だからまあ、現在(SQLite 3.15.1)の実装で問題ない、ということにもなりますが、、、
私の環境では、
RAMに十分空きがある(システムキャッシュにヒットする)場合には、
ATTACHは0.04-0.06秒程度で終了します。
RAMを使い尽くしている(システムキャッシュに十分な容量がない)場合には、
ATTACHだけで2-6秒程度かかり、これはVACUUM等で改善します。
また、ATTACHの順番を変えると何となく雰囲気が変わります。
(ただしこの結果は少し矛盾してますが)
650NAME IS NULL
2017/11/25(土) 16:21:49.63ID:??? わざわざATTACHする理由は
651NAME IS NULL
2017/11/25(土) 17:33:35.10ID:??? >>650
DB間のデータ転送をtransactionで括るため
DB間のデータ転送をtransactionで括るため
652NAME IS NULL
2017/11/25(土) 17:54:56.49ID:???653NAME IS NULL
2017/11/25(土) 18:59:03.84ID:??? >>652
> 2相コミット
なんだこりゃ?Wiki読んだが何に使うのかよく分からん。
分散掲示板という意味なら面白いと思うし一部に待望されているが、俺が今作っているのはこれではない。
DBは同一ホストにある。
単にSQLiteの性能を出すために適宜DBを分割しているだけ。
というか、ロック単位がDBだから、平行させるためには分割するしかなく、そうしてるだけ。
(テーブル単位でロックできる他DBなら分割する意味はない)
例えばtech板なら、
「スレ本体(tech.live)」「スレヘッダのみ(全板共通)(tags.db)」「スレアーカイブ(tech.archived)」にしてあり、
スレ落ち時に
・tags.dbからヘッダを消去
・tech.live->tech.archivedにスレ内容転記
・tech.liveからスレを消去
する為にこれら3つをトランザクションで括っている。
この間に別板のスレの読み出しは、例えばprog板ならprog.liveだけで完結するのでブロックされない。
書き込みは全板共通のtags.dbによってブロックされてしまうが、これは仕様上致し方なし。
掲示板なので読み出し性能重視でこの設計にしている。
> 2相コミット
なんだこりゃ?Wiki読んだが何に使うのかよく分からん。
分散掲示板という意味なら面白いと思うし一部に待望されているが、俺が今作っているのはこれではない。
DBは同一ホストにある。
単にSQLiteの性能を出すために適宜DBを分割しているだけ。
というか、ロック単位がDBだから、平行させるためには分割するしかなく、そうしてるだけ。
(テーブル単位でロックできる他DBなら分割する意味はない)
例えばtech板なら、
「スレ本体(tech.live)」「スレヘッダのみ(全板共通)(tags.db)」「スレアーカイブ(tech.archived)」にしてあり、
スレ落ち時に
・tags.dbからヘッダを消去
・tech.live->tech.archivedにスレ内容転記
・tech.liveからスレを消去
する為にこれら3つをトランザクションで括っている。
この間に別板のスレの読み出しは、例えばprog板ならprog.liveだけで完結するのでブロックされない。
書き込みは全板共通のtags.dbによってブロックされてしまうが、これは仕様上致し方なし。
掲示板なので読み出し性能重視でこの設計にしている。
654NAME IS NULL
2017/11/25(土) 19:07:59.44ID:???655NAME IS NULL
2017/11/25(土) 19:18:27.38ID:??? >>654
複数DBのトランザクションという意味なら、それは追加されたらしい。
いつからかは知らん。
> SQLiteじゃなきゃ駄目な理由があるんでしょうな
共用鯖上で、PCの知識がほぼ無いadminでも扱える掲示板を目指している。
そのデプロイの都合上、PHP+SQLiteだ。
上位版はNodeで用意する予定だが、こちらもSQLiteになる。
それ以上の上位版は、他に既に色々あるからそっち使え、で行く。
興味あるのなら以下を読んでくれ。
https://meguca.org/g/2724701
複数DBのトランザクションという意味なら、それは追加されたらしい。
いつからかは知らん。
> SQLiteじゃなきゃ駄目な理由があるんでしょうな
共用鯖上で、PCの知識がほぼ無いadminでも扱える掲示板を目指している。
そのデプロイの都合上、PHP+SQLiteだ。
上位版はNodeで用意する予定だが、こちらもSQLiteになる。
それ以上の上位版は、他に既に色々あるからそっち使え、で行く。
興味あるのなら以下を読んでくれ。
https://meguca.org/g/2724701
656NAME IS NULL
2017/11/25(土) 19:32:02.29ID:??? そういえばSQLiteのmainデータベースの名前を変える方法知らないか?
ググったけどなさそうなんだが。
具体的には>>647を試したコードがmainが3種類必要で結果的に3つコピペしてありうざい。
(live,tags,archiveにすれば共通化できるが、どれかをmainにしないといけない縛りのため)
ググったけどなさそうなんだが。
具体的には>>647を試したコードがmainが3種類必要で結果的に3つコピペしてありうざい。
(live,tags,archiveにすれば共通化できるが、どれかをmainにしないといけない縛りのため)
657NAME IS NULL
2017/11/25(土) 19:40:25.85ID:???658NAME IS NULL
2017/11/25(土) 19:42:22.24ID:??? >>656
データベースのファイル名を変えるだけでは?
データベースのファイル名を変えるだけでは?
659NAME IS NULL
2017/11/25(土) 19:47:20.46ID:??? >>658
違う。
というか、調べた限り、ATTACH自体が新しい機能らしくて、そこまで整備されてない。
どの名前でもopenしたものはmainになるし、メモリ上のはtempになる。
それにATTACHしたものは自由に名前を付けられる、というか、つけないとsyntax上アウト。
で、mainの別名をつけられれば助かるんだが、、、
なお、tableやcolumnは別名を付けられる。
違う。
というか、調べた限り、ATTACH自体が新しい機能らしくて、そこまで整備されてない。
どの名前でもopenしたものはmainになるし、メモリ上のはtempになる。
それにATTACHしたものは自由に名前を付けられる、というか、つけないとsyntax上アウト。
で、mainの別名をつけられれば助かるんだが、、、
なお、tableやcolumnは別名を付けられる。
660NAME IS NULL
2017/11/25(土) 19:54:47.58ID:???661NAME IS NULL
2017/11/25(土) 20:03:08.43ID:???662NAME IS NULL
2017/11/25(土) 20:10:41.94ID:???663NAME IS NULL
2017/11/25(土) 20:34:48.34ID:??? >>662
いやこれはソースコード上の美学の問題だから、それを構造まで広げるのはマズい。
どうしてもというのなら関数にすればいいだけだし、その方がマシ。
どのみち最終的にはコメントアウトで捨てるコードだし、
特にいいやり方がなければコピペで放置だ。
ただしtempにいったん受けた方が速い可能性があり、結果的にそれをやるかも。
具体的に言うと、sqlite_masterのマージで
少ない方を多い方にINSERTするわけだが、(どうやらこの判定はしている)
今のところliveに150、archivedは1000-10000スレ程度で運用する予定なので、
最低150のINSERTが発生して、これが0.05sかかっている。(ように見える)
tempで空テーブルを用意してやればこれが不要になる。
落ちるスレに150レスなら転記でINSERT150回必要であり、単純には倍速になる可能性がある。
というわけだ。
いやこれはソースコード上の美学の問題だから、それを構造まで広げるのはマズい。
どうしてもというのなら関数にすればいいだけだし、その方がマシ。
どのみち最終的にはコメントアウトで捨てるコードだし、
特にいいやり方がなければコピペで放置だ。
ただしtempにいったん受けた方が速い可能性があり、結果的にそれをやるかも。
具体的に言うと、sqlite_masterのマージで
少ない方を多い方にINSERTするわけだが、(どうやらこの判定はしている)
今のところliveに150、archivedは1000-10000スレ程度で運用する予定なので、
最低150のINSERTが発生して、これが0.05sかかっている。(ように見える)
tempで空テーブルを用意してやればこれが不要になる。
落ちるスレに150レスなら転記でINSERT150回必要であり、単純には倍速になる可能性がある。
というわけだ。
664NAME IS NULL
2017/11/25(土) 21:11:41.89ID:??? >>663
旦那、ソースコードの美学なんてもんに拘ってたら、日本の薄汚いIT業界で食っていけませんぜwww
旦那、ソースコードの美学なんてもんに拘ってたら、日本の薄汚いIT業界で食っていけませんぜwww
665NAME IS NULL
2017/11/27(月) 12:31:20.51ID:??? 日本の薄汚いIT業界でSQLiteなんて使わんだろ。
だいたいは自分の自主開発用とか趣味用だろ。
SQLiteでクライアントに納品してる奴とか保守してる奴とかいるの?
いるなら俺も雇ってくれw
だいたいは自分の自主開発用とか趣味用だろ。
SQLiteでクライアントに納品してる奴とか保守してる奴とかいるの?
いるなら俺も雇ってくれw
666NAME IS NULL
2017/11/27(月) 12:38:03.57ID:dl62vFEl 自主開発てなんかイヤラシイな
667NAME IS NULL
2017/11/27(月) 12:56:06.29ID:??? イヤラシイのは自家発電
668NAME IS NULL
2017/11/27(月) 13:09:39.99ID:???669NAME IS NULL
2017/11/27(月) 14:45:54.11ID:??? SQLiteの爆速さと手軽さは中毒になるからな
670NAME IS NULL
2017/11/27(月) 21:00:36.34ID:nKW4iMOq こおゆう大げさな事をゆう奴を信用してはならん
671NAME IS NULL
2017/11/27(月) 22:08:08.61ID:??? シングルユーザーで使う分には便利だよな
トランザクションとか自分で実装したくないし、遥かに信頼できる
トランザクションとか自分で実装したくないし、遥かに信頼できる
672NAME IS NULL
2017/11/27(月) 22:10:53.86ID:??? >>669
速いかは微妙じゃないか?
俺は結局、PRAGMA SYNCHRONOUS = OFF; PRAGMA JOURNAL_MODE = MEMORY;
を常用する羽目になっているが、これってどうなのよ?と思うし。
ただし作者の「ジャーナルにはHDDの2回転が必要で、それくらいはかかる」
というのもまた正しいわけだが。
速いかは微妙じゃないか?
俺は結局、PRAGMA SYNCHRONOUS = OFF; PRAGMA JOURNAL_MODE = MEMORY;
を常用する羽目になっているが、これってどうなのよ?と思うし。
ただし作者の「ジャーナルにはHDDの2回転が必要で、それくらいはかかる」
というのもまた正しいわけだが。
673NAME IS NULL
2017/11/27(月) 22:38:09.33ID:??? 更新は遅いね
674NAME IS NULL
2017/11/28(火) 01:19:55.49ID:??? いっぱいあるだろ。
何と言ってもPublicDomainってのが使いやすい。
使ってても言わなくていいし。
何と言ってもPublicDomainってのが使いやすい。
使ってても言わなくていいし。
675NAME IS NULL
2017/11/28(火) 19:58:13.47ID:??? ちょっと複雑なSQLを書けないところがNGかな。
副問い合わせとか。
それ以外はすんごくいい。
副問い合わせとか。
それ以外はすんごくいい。
676NAME IS NULL
2017/11/28(火) 21:11:17.44ID:??? 服問い合わせ程度ならSQLite3でできるでしょ
677NAME IS NULL
2017/11/28(火) 21:37:51.97ID:??? RIGHT OUTER JOIN、FULL OUTER JOIN が出来ないくらい?
678NAME IS NULL
2017/11/29(水) 14:42:34.87ID:??? >>673
AutoCommitしてんじゃねーの?
AutoCommitしてんじゃねーの?
679675
2017/11/30(木) 05:52:18.47ID:???■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【移民】日本史上初めての中国人の大量移住が始まる [ぐれ★]
- 元フジアナ・渡邊渚、初写真集『水平線』発売が決定 水着&下着カットにも挑戦「自分をまた愛せるようになりたい」 [muffin★]
- 市川紗椰、「ケチャップ+ウスターソースを混ぜたあの定番ソース。みなさんはなんて呼んでますか?」“正式名称調査”に回答続々 [muffin★]
- 《不倫疑惑で降板ならやりきれない》永野芽郁の「日曜劇場」出演巡り問われるスキャンダルの「罪と罰のバランス」 [ネギうどん★]
- 独身の北乃きい(34)、既婚者との会話にモヤッとすること語る「『あんたに何がわかんの?』『子供産んでないでしょ?』ってなっちゃう」 [muffin★]
- 外国人材の確保へ…育成就労、運用方針で意見公募 政府、27年4月開始目指す [少考さん★]
- (ヽ´ん`)「ケンモメンはアニメ漫画ラノベみたいな低俗なものを徹底的に嫌う。アニメ見てるバカは統一教会信者」 [932029429]
- 肛門からアスリートの大便を挿入するドーピングが大流行、身体能力50%アップした人も [159091185]
- 【悲報】キラキラ売春女子さん、ドバイの富豪の前でヤギとSEXさせられ、ウンコ食い、最後に骨を折られて殺される [578545241]
- 男性の本音を描いた漫画、大炎上してしまう😭全女は事実を直視してこの漫画を読み込め😡 [485187932]
- お🏡がない。どうしてこんな目に、に、に、😭
- 【朗報】トランプ、年収20万ドルの中低所得者の所得税撤廃を表明wwwwwww日本人… [705549419]