TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
成績管理システムを作ろう!2【社会貢献】
DB設計を語るスレ 10
データベース破壊録カイジ
【10g】オラクルマスター Silver Part3【11g】
自治スレ@DB板 2
PostgreSQL Part.11
Microsoft SQL Server 総合スレ 12
( ´_ゝ`)流石だよな俺らin DB板(´く_` )
【9i】オラクルマスターGOLDのスレ【10g】
Oracle>>>>>>SQLServer
SQLite Part.10
- 1 :2012/08/16 〜 最終レス :2020/06/07
- 組み込み型データベース 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
- 2 :
- 【過去スレッド】
・sqliteを語るスレ
http://pc8.2ch.sc/test/read.cgi/db/1056956494/
・SQLite 2
http://pc8.2ch.sc/test/read.cgi/db/1140827718/
・SQLite 3
http://pc8.2ch.sc/test/read.cgi/db/1152367932/
・SQLite 4
http://pc11.2ch.sc/test/read.cgi/db/1162621344/
・SQLite 5
http://pc11.2ch.sc/test/read.cgi/db/1176223619/
・SQLite 6
http://pc11.2ch.sc/test/read.cgi/db/1193118037/
・SQLite 7
http://pc11.2ch.sc/test/read.cgi/db/1220581676/
・SQLite 8
http://hibari.2ch.sc/test/read.cgi/db/1250225486/
・SQLite 9
http://toro.2ch.sc/test/read.cgi/db/1298737360/
- 3 :
- 【ツール】
http://www.sqlite.org/cvstrac/wiki?p=ManagementTools
・TkSQLite
http://reddog.s35.xrea.com/wiki/TkSQLite.html
・PupSQLite
http://www.eonet.ne.jp/~pup/software.html
・SQLite Manager (Firefox add-on)
http://code.google.com/p/sqlite-manager/
https://addons.mozilla.org/ja/firefox/addon/5817
【ラッパ】
http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
・System.Data.SQLite (ADO.NET 2.0 Provider)
http://sqlite.phxsoftware.com/
・SQLite ODBC Driver (ODBC)
http://www.ch-werner.de/sqliteodbc/
・SQLite JDBC driver (JDBC)
http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC
・SQLite Java Wrapper/JDBC Driver (JDBC、Java)
http://www.ch-werner.de/javasqlite/
・SQLiteJDBC (JDBC)
http://www.zentus.com/sqlitejdbc/ ※ページ行方不明
- 4 :
- 【ネタ】
・OS X ハッキング! SQLiteが広げるこれからのアプリケーション
http://journal.mycom.co.jp/column/osx/236/
・SQLite Java Wrapperのコンパイル
http://syo.cocolog-nifty.com/freely/2007/10/sqlite_java_wra_f79c.html
・生まれ変わるPHP - Zend Engine 2、SQLiteの実力は?
http://news.mynavi.jp/special/2004/php5/007.html
・SQLite性能評価その1
http://www.sutosoft.com/room/archives/000450.html
・Fulltext index on SQLite
http://www.dodgson.org/omo/t/?date=20061001
・SQLite の全文検索を Python から使ってみる (1)
http://plaza.rakuten.co.jp/kugutsushi/diary/200707270001/
・SQLite Full Text Search with MeCab
http://reddog.s35.xrea.com/wiki/SQLite%20Full%20Text%20Search%20with%20MeCab.html
・MSDN Magazine: 働くプログラマ - SQLite の内部
http://msdn.microsoft.com/ja-jp/magazine/ff898405.aspx
・アドビ、SQLite Consortiumに参加で開発を支援
http://builder.japan.zdnet.com/db-sql/20368174/
・SQLiteに参加、Berkeley DBの置き換え狙うOracle
http://news.mynavi.jp/news/2010/07/06/032/index.html
・How SQLite Is Tested
http://www.sqlite.org/testing.html
- 5 :
- 【書籍】
・SQLite入門 第2版 (西沢直木 著)
http://www.amazon.co.jp/dp/479811944X
入門用にはとりあえずこの一冊?
・新標準SQLite
http://www.amazon.co.jp/dp/4797354739
・SQLite ポケットリファレンス
http://www.amazon.co.jp/dp/4774143944
・Pocket詳解 SQL辞典 (堀江美彦 著)
http://www.amazon.co.jp/dp/4798018619
各種 RDBMS 対応の SQL のリファレンス本で、SQLite にも対応。
が、ざっと見たところ SQLite に関してはあまり緻密に調べられておらず
不正確なところもあるように見受けられる。
・基礎から学ぶWebデータベースプログラミング (堀川久 著)
http://www.amazon.co.jp/dp/4274065294
前半は SQL の基礎について、後半は Ruby で Web アプリの作成についての説明。
PostgreSQL, MySQL, SQLite の仕様の違いにも触れられている。
が、 SQLite は SQLite2 ベースなので情報が古いかも。
・PHP+SQLite実践サンプルブック (豊崎直也 著)
http://www.amazon.co.jp/dp/4883374297
内容不明。7年前の本。
・The Definitive Guide to Sqlite (Mike Owens 著)
http://www.amazon.co.jp/dp/1590596730
・SQLite (Developer's Library) (Chris Newman 著)
http://www.amazon.co.jp/dp/067232685X
・Using SQLite (Jay A. Kreibich 著)
http://www.amazon.co.jp/dp/0596521189
- 6 :
- テンプレここまで。
SQLiteスレもついにスレ番2桁目に突入です。
- 7 :
- SQLiteでの同時処理について質問です。
あるテーブルで値を+1する処理を行っています。
UPDATE sample_table SET count=count+1 WHERE num = $num
処理が呼ばれるとsample_tableのcountが1増えます。
ですがこが同時に100回行っても100増えません。
ゆっくりと100回行うと100増えます。
おそらく前の処理をしている最終に読み取った値に+1をしているのでうまく増えていないということだと思うんですがどのようにすれば行った回数分countを増やせるでしょうか。
- 8 :
- >>7
前の処理のロック区間中にUPDATEしようとしてエラーになった分が更新されていない、とか
更新される前のcountの値を読み込んでインクリメントしたので前と同じ値を上書きしてしまっている、とか
いくつか原因は考えられるけど、情報が足りないので答えられないです。
・そもそも「同時処理」とは何を想定している?
・「同時に100回行う」ための手段(orコード)は?(SQL文だけ貼られても何がしたいのか分からない)
・「ゆっくり」とは何をどうしたの?
- 9 :
- >>8
回答ありがとうございます。
こちらのcount+1を行うものはWEBサイトにおいておりまして、特定のアクセスが行われると+1されるというものになります。
そのため不特定多数の場所からアクセスがある状況です。
アクセスカウンターのようなものをSQLite3で行っておりアクセス毎に+1されます。
同時処理についてですが、こちらはWEB上から処理を行うようになっております。
そのため複数の箇所から同時に多数の要求があった場合に処理が複数走ることを指します。
100回行うコードというのはありません。
テストのためにApacheのabというツールで10アクセス10スレッドで100のアクセスを行いました。
その際に+100ほど数値が増えないといけないのですが、実際には30程度しか増えておりませんでした。
ゆっくりというのは手動でアクセスを100回した場合のことを指しております。
F5でリロードを100回するのに近いと思います。
そのためゆっくりアクセスを行うというニュアンスで使用いたしました。
質問内容に不備があり申し訳ありませんでした。
対策が思いつかないのでアドバイスなどいただけると助かります。
- 10 :
- ただの排他漏れだろ
アクセスカウンタ作ったことないの?
- 11 :
- >>9
質問する時はコードも貼ること。
もちろん、100回のクエリが全部成功してるかどうかは確認したんだよね?
- 12 :
- >>9
アクセスカウンタは作ったことあります
排他制御も知ってはおりますが、SQLiteではどのように排他制御を行うのでしょうか?
>>10
100回のアクセスが成功していることは確認しています。
アクセスのテストについては申し訳ないですがツールを使用しているためコードがありません。
カウントの部分については
$connect = count_db();
$countup = $connect ->prepare("UPDATE sample_table SET count=count+1 WHERE num = $num");
$countup ->execute();
となります。
- 13 :
- >>12
SQLiteはそこら辺のDBMSと同じで別に何もしなくても「排他制御」はされるよ。
「100回のアクセス」とやらが成功しているのをどうやって確認したのか知らないけど、どう考えてもSQLクエリの実行が失敗してる。
見たところPHP+PDOって感じだけど(質問する時は言語名くらい書くこと)、count_db()が何だか分からないし、
prepareなのにプレースホルダ使ってないし、クエリの実行結果が成功かどうか確認しているようにも見えないし、
とりあえずPHPとPDOとデータベースを先に勉強した方が良いと思うよ。
あと、テーブル構造とか変数が何だか分からないから、クエリ自体があってるのかすら確認できないけど、まあそれはいいや。
- 14 :
- >>13
アクセスの成功に関しては負荷ツール側で全てのリクエストがHTTPステータス200で終了していることで確認しました。
ですのでSQLクエリの実行が失敗していると見てよいのかの判断がついておりませんでした。
排他制御は行われているとの事なのでカウントがプラスされていない時点でクエリが正常に実行されていないと見るべきでした。
申し訳ありません。
count_db()については
function count_db()
{
$connect = new PDO("sqlite:./sample_table.sql3");
return $connect ;
}
となります。
テーブル構造は
sample_table
------------------
|num | count |
------------------
|index | 1 |
|contact | 30 |
------------------
このようになってます。
num側にページアドレス・count側にアクセス数が入っています。
PDOとデータベースの勉強のためにまずは簡単なアクセスカウンターを作ってみようかと思って作成いたしました。
- 15 :
- >>14
ページアドレスがnum…。まあいいけど。
データベースにしてもPDO(と言うかPHP)にしても入門書は腐るほど出版されてるから、
とりあえず適当なのを買ってきて読めば一通りのことは出来るようになると思う。
あと、HTTPの仕組みとかも勉強した方がいいかもね。
SQLクエリの実行結果は [DBMS] → [PHP]
HTTPステータスは [PHP(と言うかWEBサーバ)]→[WEBブラウザ]
ちなみに、今回のは排他制御がかかってる時に同時にUPDATEしようとしてエラーになったらどうするか、の考慮が漏れてるのが問題。
おそらくロック待ちのタイムアウト値が設定されていないので、100回のうちエラーになった分はスルーされてる。
これだけレスしておいてあれだけど、微妙にスレ違い(今のところあんまりSQLite関係ない)だし、ヒントも書いたので、
あとはWEBプログラミング板の適当なスレに移動した方が幸せになれるかもしれない。勉強頑張れ。
- 16 :
- >>15
ありがとうございます。
排他中の制御に関してはまったく考慮しておりませんでした。
前の処理が終わるまで順番に待っているだろう
くらいの認識でした。
amazonあたりで評価の高そうな本をいくつか見てみたいと思います。
ありがとうございました。
- 17 :
- 外部結合しているテーブルの行をを一度に消す方法はないのでしょうか?
delete TBL_A from TBL_A left join TBL_B on TBL_A.keyid = TBL_B.id where TBL_B.keyid = 4;
や
delete from TBL_A from TBL_A left join TBL_B on TBL_A.keyid = TBL_B.id where TBL_B.keyid = 4;
など紹介されているものを色々試してみたのですが、どうしてもsyntaxerrorがdelete直後の単語ででてしまいます。
テーブルごとに削除するしかないのでしょうか…?
- 18 :
- DELETEはFROM一つしか書けないよ。JOINも当然書けない。
メインのテーブルのレコードを削除したとき必ず従属テーブルのレコードを削除するならトリガーに書きなよ。
- 19 :
- >>18
回答ありがとうございました。
トリガー使ったことないのですが、挑戦してみます。
- 20 :
- ばか
- 21 :
- そんな事言うんじゃないよ
- 22 :
- sqliteのファイルを読み込む際に、そのファイルがsqliteのファイルであるかどうかを確認することはできますか?
sqlite以外のファイルを読み込んだ際に当たり前ですがエラーが出るのでそれに対処したいと思っています。
読み込むsqliteのファイル名に規則性がないので振り分けができないので、ファイルがsqliteファイルであるかどうか確認する方法があれば教えてもらえると助かります。
- 23 :
- 3.7.14
- 24 :
- >>22
自分で結論にたどり着いてるみたいだけど…。
>sqliteファイルであるかどうか確認する方法
>sqlite以外のファイルを読み込んだ際に当たり前ですがエラーが出る
- 25 :
- >>24
ワロタ
確かに、エラーが出てるとわかってるならそれでいいじゃんとなるけどねw
事前に判断することができるか?という希望に答えるとすると、
C言語的にはファイルを開いて先頭16バイトバイナリ読込して、
"SQLite format 3\x00"とmemcmpして見れば一応わかる。
ただし、こんなものは偽装はできるし、このヘッダ部は正常でも、sqlite的に演算したら
ファイルが破損していた場合は結局エラーになるので価値は・・・疑問かな。
sqlite3_openv2がエラーを返すならそれで判断するのが良いよ。
- 26 :
- http://www.sqlite.org/fileformat2.html
- 27 :
- SQLite3使ってますがカラムの追加は最後尾にしか出来ないでしょうか?
| 1 | 2 | 3 | 4 |
とあった場合
| 1 | 2 | 3 | 3.5 | 4 |
としたいと思ってます。
- 28 :
- >>27
http://www.sqlite.org/lang.html
http://www.sqlite.org/lang_altertable.html
http://www.sqlite.org/lang_select.html
質問する時は、何をするために、どういうSQL文を使って、結果がどうなって、それが目的とどう違ったか、くらいは書くこと。
じゃないと ドキュメント読んで下さい くらいしか答えられない。
- 29 :
- >>27
ALTERならどのDBMSでもそうじゃないの?
テーブルを作り直してINSERTすればいいじゃん。
- 30 :
- そういう話なら、alter table文の最後に"before カラム名"とか"after カラム名"をつけると、テーブルをselect *で見た時に、
意図した場所に入ったように見せる(物理ディスク上はどうせ最後に追加される)ことができるRDBMSは結構あると思う。
けど、もしかしたらSQL標準には無かったかもしれない。
と言うか>>27の目的はselect文で順番を変えるだけで済むような。
- 31 :
- select *しか知らいないと予想してみる
- 32 :
- SQLite3はMySQLみたいに任意の場所に追加は出来なかったと思う
どうしても順序通りに作りたいなら
テーブル作り直して、Insertしかないと思う。
SQLite3で before カラム名 が出来るかどうかは試したこと無い。
- 33 :
- SQLiteってあんまし触ったこと無かったけど
insert into test('test','test2') values ('1','2'),('3','4');
って出来ないの?
insert into test('test','test2') values ('1','2');
なら出来るんだけど、複数insertするとときの作法がよくわからない。
- 34 :
- >>28にもあるようにドキュメント読めばすぐに解決できるだろうが
http://www.sqlite.org/lang.html
- 35 :
- なるほどね
さすがにLiteっていうだけあって色々制限あるね
というかこれからの質問は
ドキュメント読めばすぐに解決できるだろうが
http://www.sqlite.org/lang.html
のテンプレ張れば解決だな
- 36 :
- と言うか最初からテンプレにある。>>1にアンカ張れば解決。
- 37 :
- sqlite> .version
SQLite 3.7.14 2012-06-30 ********
sqlite> CREATE TABLE jedict (jword TEXT, eword TEXT);
sqlite> INSERT INTO jedict ('hon', 'book') , ('kon', 'navy'), ('mon', 'gate');
sqlite> select group_concat(jword, '_') from jedict;
hon_kon_mon
- 38 :
- >>37
これで挿入は出来るんだけどカラム増やすためにDB作り直したときにいっつもこまってるんだよね
sqlite> CREATE TABLE jedict (jword TEXT, eword TEXT)
を
sqlite> CREATE TABLE jedict (jword TEXT, eword TEXT, hword TEXT);
にしたとき
INSERT INTO jedict ('hon', 'book') , ('kon', 'navy'), ('mon', 'gate');
だと困るからいっつも
INSERT INTO jedict ('hon', 'book', '') , ('kon', 'navy', ''), ('mon', 'gate', '');
こんな感じに書き直してから挿入するので手間がかかってしょうがない
- 39 :
- hword カラムを not null default '' にして追加したあと
INSERT INTO jedict (jword, eword) values ('hon', 'book') , ('kon', 'navy'), ('mon', 'gate');
じゃダメ?
- 40 :
- そういう手もあるか
そもそもSQLiteで移植ってみんなどうやってんの?
MySQLとかならphpyAdminとか使ってラクラク出来るけどSQLiteでそういうのあるの?
- 41 :
- ごめん、移植ってのがよく分からない。
流れ的に>>38みたいにDB作り直して中のデータの一部or丸ごとをコピーすること?
それとも他のRDBMSにデータを持って行ったり、持って来たりすること?
- 42 :
- >>41
DB作り直して中のデータを丸ごとコピーしたりすること
言葉足りずで申し訳ない
- 43 :
- そもそも、中身を丸ごとコピーしないといけないような重要なDBを、
構造を変えて作り直す状況があんまり無いんじゃ…。
- 44 :
- >>42
sqlで出来るならそれで。
できないならぶっちゃげぱっとスクリプト書いちゃうな。
- 45 :
- 年中作り直すのは設計に問題がある。
カラムの追加ぐらいでいちいち作り直さない。
- 46 :
- さすがにカラム追加するだけで作り直しとかはないけど
拡張して追加よりは作り直したほうがいい場合が年に1回くらいあったりしてたんで
みんなどうやってんのかと思って。
- 47 :
- 年中作りなおすなんて書いてないだろ。
質問者は、作りなおすハメになったのが設計の甘さかどうかなどは問わず、
「みんな、どうするのかな?」って軽いつもりで聞いてるんだろ。
エラソーに設計に問題がーとか言ってるのは意図を汲めない馬鹿丸出しの発言だろ。
SE/PGだけが業務でコンピュータを使いう時代じゃないんだ。
少しは考えろよ。
- 48 :
- >>47
訂正、業務かどうかも前提とすべきではなかったな。
- 49 :
- 「作り直す時のテクニックをみんなで考えよう」じゃなくて「みんなどうやってんの?」だからなー。
業務だったらそんなマズい設計にはならないし、趣味だったら入れなおすほどのデータなんて扱わない人が大半だろうから、
質問者へのレスとしては間違ってないと思うぞ。年中云々は知らんけど。
仮に前者を問いかけたつもりなんだとしたら聞き方を間違えてる。
- 50 :
- phpMyadminみたいにWEB上でお手軽に出来るのがあればいちいちスクリプト組んだりコマンド流したりやんなくていいんだろうけどね
俺はデータをどっかに持ってく場合は
各値を'で囲んで取り出して1レコードを()でくくる感じで吸い出す
('a', 'b', 'c')
こんな感じ。
あとは引越し先にinsertで突っ込む。
1回だけ構造が違うところに突っ込むことがあったけど、そんときは
('a', 'b', '', 'c')
って感じにして対応した。
そんときは80万レコードあったので2個目の,のあとに'', を追加するスクリプト組んで書き換えた。
このやり方がスマートかどうかはわかんないけど、おれは引越しするときはいつもこんな感じでしてる。
- 51 :
- >>47
いったい誰と戦っているんだよ?空気脳さん.
- 52 :
- 3.7.14.1
- 53 :
- PHP上からSQLiteファイル内のデータを全部引っこ抜くようなのって無いんだっけ?
全レコードを>>50みたいな感じでおいらも引っこ抜いてるんだけど。
- 54 :
- keyとvalueしかない構造だから悩まない
- 55 :
- 突然どうした?
- 56 :
- 追加とか変更とかは適当にコマンド流すけど
何か変更することあればFirefoxのSQLiteManagerってやつでいじってる
それ以上のことやろうと思うならそもそもSQLiteとか使わずMySQLとか使ってるしな
- 57 :
- だからどうした?
- 58 :
- 以下の様なデータが格納されているデータベースで
1
1
1
2
2
3
3
3
4
とあるデータで各値が何回出てくるかカウントするってことは出来ますか?
1=3回
2=2回
3=3回
4=1回
みたいな検索結果を得たいと思ってます。
- 59 :
- table名 theTable
カラム名 a int
a
--
1
1
1
2
2
3
3
3
4
--
select a, count(*) as cnt from theTable group by a order by a
- 60 :
- >>59
解凍ありがとうございます。
こういう組み合わせ知らなかったので凄い勉強になりました。
- 61 :
- まさかこんなレベルでプログラマじゃないよなw
- 62 :
- >>58-61
スレ違い。
SQL質疑応答スレ 13問目
http://toro.2ch.sc/test/read.cgi/db/1343899481/
- 63 :
- SQL知らなくても凄腕のプログラマもいるし
- 64 :
- SQLiteって別ドメインであってもファイルにアクセスさえ出来れば、どこに置いてても操作できる?
- 65 :
- http://www.sqlite.org/faq.html#q5
5) Can multiple applications or multiple instances of the same application access a single database file at the same time?
抜粋意訳
NFSでマウントすればリモートアクセス出来るが、NFSのファイルロックは信頼性か低いものもありオススメしない
- 66 :
- SQLiteってクロスドメインとかいけるんだっけ
- 67 :
- ファイルって複数のテーブル突っ込んでサイズデカくなっても
ひとつのテーブルへの速度に影響ないレベル?
- 68 :
- 検索はそんなにかわんない
でもinsertとかupdateとかとかになると件数が10万件とかあると多少違ってくる
- 69 :
- >>68
ありがと! 検索メインなのでまとめてみます!
- 70 :
- SQLiteってDB自体を暗号化って出来る?
- 71 :
- SQLCipherってので暗号化できるみたいだけど半有料
- 72 :
- 書き出しと読み出しの部分のソスを書き換えて...
なんてのは出来そう?
- 73 :
- >>70
>>1のSupportを参照。有料で別ライセンス(パブリックドメインではない)だけど本家が出してる。
- 74 :
- 暗号化してインサートすればいいんじゃね?
- 75 :
- >>72 する手間かけるくらいなら >>74 の方が良いね
- 76 :
- そか IO部分はそのままという事ね。
すぐ 出来そうな感じはする。
出来ないけどorz
- 77 :
- >>74-75
暗号化してinsertしちゃったら
検索出来なくなるじゃん
- 78 :
- I/Oはそのままってだけですよ。
- 79 :
- >>77
検索キーも暗号化して検索すればいいんじゃね?
- 80 :
- 部分文字列の比較とか難しくないか?
SUBSTRINGを使った場合位置が保証されるかとか。
- 81 :
- そりゃrotみたいな単純なもんならいいけど、暗号化とは言えないし、そもそもそれだと部分一致とかマルチバイトとか面倒だろ
- 82 :
- >>79
キーだけ暗号化した暗号文と
キーを含む文字列を暗号化した暗号文が
部分一致することは普通はあってはならない
- 83 :
- というか、一般にそれを暗号化とは言わない。
スレ違いなのでプログラム技術板あたりへどうぞ。
- 84 :
- 出来ないなら普通に出来ないって言えばいいのに
- 85 :
- 暗号化した文字の比較とかの話だからスレ違いってことでしょ
暗号化が出来る/出来ないの話なら>>73で出来るって結論が出てる
- 86 :
- 馬鹿には無理
- 87 :
- sqliteってファイルベースのデータベースじゃん
その作成されるデータファイルのパーミッションやユーザ権限ってどうなってんの?
ユーザ毎に保存してくれる?
- 88 :
- 最後の一行がよく分からないけど、実行したユーザの権限で作成されるよ。
- 89 :
- ありがとー
- 90 :
- sqlite3_close_v2 よいよね
- 91 :
- 3.7.15
- 92 :
- SQLite3の1つのDBの中に、最大でいくつまでテーブルが作成できるのでしょうか?
- 93 :
- >>92
>>1
答えはないけどヒントは書いてある。
- 94 :
- 3.7.15.1
- 95 :
- .netなんですけど1つ目のテーブル読みながら2つめにコピーしようと
してるんですがdatabase file is lockedになります
mdbでやってた時は動いててそれをsqliteに置き換えただけなのですが
原因わかりますでしょうか
- 96 :
- エスパーじゃないので分かりません
コードとかSQL文を貼ってみてはいかがでしょうか
- 97 :
- >>93
すみません
いろいろと調べているのですが見つかりません。
レコード数やフィールド数はビルドオプションで設定ができるのですが、テーブル数の設定は見つけることもできません。
定数ではなく、環境依存の値になってしまうのでしょうか?
- 98 :
- テーブル数の上限はたぶん未定義で環境(ディスク残量など)に依存。
ソースを見ても SQLITE_MAX_TABLES みたいなそれらしき記号定数なし。
ためしに機械的な名前(T_0, T_1, .. T_99999)でテーブルを10万個作成してみたが作れた。
- 99 :
- 予想だけど…。
SQLiteは作ったテーブルやインデックス、ビュー、トリガーとかのスキーマ情報を、
同じファイル内の特殊な予約テーブル"sqlite_master"に格納してる。
で、レコード数の上限は2の64乗=18446744073709551616と書いてある。
これをテーブル情報だけで全部使い切るには1800京個くらいのテーブルを作る必要があるけど、
仮に1レコード1バイトしか使わなかったとしても全部使えばsqlite_masterテーブルだけで170億GBくらい必要。
実際にはテーブル情報以外にも格納するから、もう少し減るとは思うけど、事実上無制限。
と、ここまで書いて気がついたけどsqlite_masterが埋まる前にページ数の上限の方が先に来るのかな?
アーキテクチャをちゃんと読まないで適当に書いてるけど、sqlite_masterの各行に、それぞれのデータが
格納されているページ番号(の先頭)を指定してた気がするから、ページ番号とB-Treeの先頭の対応が1:1で、
それぞれのテーブルが全部1ページ内に収まってるとすれば、ページ数の上限は2の31乗-2=2147483646だと
書いてあるから、そっちの上限に先に到達するのかもしれない。
どっちにしても通常運用で支障が出ることはないくらい沢山作れそうだけど、
嘘をいっぱい書いてるかもしれないので詳しい人いたら解説お願いします。
- 101 :
- 10万個もテーブル作れるならもう1データ1テーブルとかでもいいかと思ってしまうわ。
実際にはやんないけどSQLiteで扱う程度のデータならそこまで大規模になるなら別のDB使うだろうし。
それにしても暗号化ないのがちょっと不安になるわ。
案件にもよるんだろうけどみんな暗号化とかそういうの気にせず使ってるの?
100〜のスレッドの続きを読む
DBを「でーびー」って言う人
PL/SQLできない香具師が上級SE
SQL質疑応答スレ 19問目
何故データベース設計は軽視されるのか?
Oracle 質問総合スレ13
MySQL 総合 Part24
[終了]今は亡きInformixに文句を言うスレ[おつかれ]
MySQL 総合 Part26
【】 MySQLを買収したSunを買収したOracleを 【】
オラクルマスターの給与
--------------------
【実務・コテ禁止】第一種電気工事士試験 Part41【実技試験発表】
●2019 MotoGP 第9戦 ドイツGP ザクセンリンク LAP5
マックスバリュ九州 Part.2
奈良のバレー語りましょう
製薬会社【ギリギリセーフ】祝定年退職
不倫してるかも
【出店者禁止】楽天市場の悪い店 76
【バーチャルYoutuber】にじさんじアンチスレ1356【卯月コウ応援スレ】
【専ブラ】Sync2ch 2スレ目【同期】
【4597】ソレイジア・ファーマ part2
日本の危機感の無さは一体何なのか? [866347454]
【トヨタ】新型ハイラックス Part17
あいのりの思い出を語るスレ
ソシャゲ・アプリゲーにハマる喪女 11
オーセンvsクローン 17対戦目【Vape】
【悲報】佐野サービスエリア、新社長が従業員に3億円の損害賠償請求wwwwwwwww部長には退職勧告wwwwwww [875850925]
【E46】BMW 3 Series Part60
アスペルガー症候群と語用論・意味論
水道橋博士「野党がだらしないことが問題ではなく…」「政権が長ければ、その内部が腐るのは歴史の常」 ネット「説得力がまったくない」
【サッカー】新国立競技場に見たサッカー界の無力さ 記者席の位置が「最悪」 日本のスポーツ界は陸連がリードしている
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼