[過去ログ]
SQLite Part.10 (1002レス)
SQLite Part.10 http://mevius.5ch.net/test/read.cgi/db/1345121656/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: NAME IS NULL [sage] 2012/08/16(木) 21:54:16.20 ID:??? 組み込み型データベース 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 http://mevius.5ch.net/test/read.cgi/db/1345121656/1
2: NAME IS NULL [sage] 2012/08/16(木) 21:54:47.06 ID:??? 【過去スレッド】 ・sqliteを語るスレ http://pc8.2ch.net/test/read.cgi/db/1056956494/ ・SQLite 2 http://pc8.2ch.net/test/read.cgi/db/1140827718/ ・SQLite 3 http://pc8.2ch.net/test/read.cgi/db/1152367932/ ・SQLite 4 http://pc11.2ch.net/test/read.cgi/db/1162621344/ ・SQLite 5 http://pc11.2ch.net/test/read.cgi/db/1176223619/ ・SQLite 6 http://pc11.2ch.net/test/read.cgi/db/1193118037/ ・SQLite 7 http://pc11.2ch.net/test/read.cgi/db/1220581676/ ・SQLite 8 http://hibari.2ch.net/test/read.cgi/db/1250225486/ ・SQLite 9 http://toro.2ch.net/test/read.cgi/db/1298737360/ http://mevius.5ch.net/test/read.cgi/db/1345121656/2
3: NAME IS NULL [sage] 2012/08/16(木) 21:55:28.81 ID:??? 【ツール】 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/ ※ページ行方不明 http://mevius.5ch.net/test/read.cgi/db/1345121656/3
4: NAME IS NULL [sage] 2012/08/16(木) 21:56:04.72 ID:??? 【ネタ】 ・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 http://mevius.5ch.net/test/read.cgi/db/1345121656/4
5: NAME IS NULL [sage] 2012/08/16(木) 21:56:41.67 ID:??? 【書籍】 ・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 http://mevius.5ch.net/test/read.cgi/db/1345121656/5
6: NAME IS NULL [sage] 2012/08/16(木) 21:56:54.46 ID:??? テンプレここまで。 SQLiteスレもついにスレ番2桁目に突入です。 http://mevius.5ch.net/test/read.cgi/db/1345121656/6
7: NAME IS NULL [] 2012/08/17(金) 00:25:14.78 ID:SazVH8Xb SQLiteでの同時処理について質問です。 あるテーブルで値を+1する処理を行っています。 UPDATE sample_table SET count=count+1 WHERE num = $num 処理が呼ばれるとsample_tableのcountが1増えます。 ですがこが同時に100回行っても100増えません。 ゆっくりと100回行うと100増えます。 おそらく前の処理をしている最終に読み取った値に+1をしているのでうまく増えていないということだと思うんですがどのようにすれば行った回数分countを増やせるでしょうか。 http://mevius.5ch.net/test/read.cgi/db/1345121656/7
8: NAME IS NULL [sage] 2012/08/17(金) 18:35:23.58 ID:??? >>7 前の処理のロック区間中にUPDATEしようとしてエラーになった分が更新されていない、とか 更新される前のcountの値を読み込んでインクリメントしたので前と同じ値を上書きしてしまっている、とか いくつか原因は考えられるけど、情報が足りないので答えられないです。 ・そもそも「同時処理」とは何を想定している? ・「同時に100回行う」ための手段(orコード)は?(SQL文だけ貼られても何がしたいのか分からない) ・「ゆっくり」とは何をどうしたの? http://mevius.5ch.net/test/read.cgi/db/1345121656/8
9: 7 [] 2012/08/17(金) 20:59:58.15 ID:5J6i+lyv >>8 回答ありがとうございます。 こちらのcount+1を行うものはWEBサイトにおいておりまして、特定のアクセスが行われると+1されるというものになります。 そのため不特定多数の場所からアクセスがある状況です。 アクセスカウンターのようなものをSQLite3で行っておりアクセス毎に+1されます。 同時処理についてですが、こちらはWEB上から処理を行うようになっております。 そのため複数の箇所から同時に多数の要求があった場合に処理が複数走ることを指します。 100回行うコードというのはありません。 テストのためにApacheのabというツールで10アクセス10スレッドで100のアクセスを行いました。 その際に+100ほど数値が増えないといけないのですが、実際には30程度しか増えておりませんでした。 ゆっくりというのは手動でアクセスを100回した場合のことを指しております。 F5でリロードを100回するのに近いと思います。 そのためゆっくりアクセスを行うというニュアンスで使用いたしました。 質問内容に不備があり申し訳ありませんでした。 対策が思いつかないのでアドバイスなどいただけると助かります。 http://mevius.5ch.net/test/read.cgi/db/1345121656/9
10: NAME IS NULL [sage] 2012/08/17(金) 22:09:50.59 ID:??? ただの排他漏れだろ アクセスカウンタ作ったことないの? http://mevius.5ch.net/test/read.cgi/db/1345121656/10
11: NAME IS NULL [sage] 2012/08/17(金) 22:25:47.30 ID:??? >>9 質問する時はコードも貼ること。 もちろん、100回のクエリが全部成功してるかどうかは確認したんだよね? http://mevius.5ch.net/test/read.cgi/db/1345121656/11
12: 7 [] 2012/08/17(金) 23:00:01.29 ID:SazVH8Xb >>9 アクセスカウンタは作ったことあります 排他制御も知ってはおりますが、SQLiteではどのように排他制御を行うのでしょうか? >>10 100回のアクセスが成功していることは確認しています。 アクセスのテストについては申し訳ないですがツールを使用しているためコードがありません。 カウントの部分については $connect = count_db(); $countup = $connect ->prepare("UPDATE sample_table SET count=count+1 WHERE num = $num"); $countup ->execute(); となります。 http://mevius.5ch.net/test/read.cgi/db/1345121656/12
13: NAME IS NULL [sage] 2012/08/18(土) 01:21:41.82 ID:??? >>12 SQLiteはそこら辺のDBMSと同じで別に何もしなくても「排他制御」はされるよ。 「100回のアクセス」とやらが成功しているのをどうやって確認したのか知らないけど、どう考えてもSQLクエリの実行が失敗してる。 見たところPHP+PDOって感じだけど(質問する時は言語名くらい書くこと)、count_db()が何だか分からないし、 prepareなのにプレースホルダ使ってないし、クエリの実行結果が成功かどうか確認しているようにも見えないし、 とりあえずPHPとPDOとデータベースを先に勉強した方が良いと思うよ。 あと、テーブル構造とか変数が何だか分からないから、クエリ自体があってるのかすら確認できないけど、まあそれはいいや。 http://mevius.5ch.net/test/read.cgi/db/1345121656/13
14: 7 [] 2012/08/18(土) 01:37:10.10 ID:ZAlPZ/Vl >>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とデータベースの勉強のためにまずは簡単なアクセスカウンターを作ってみようかと思って作成いたしました。 http://mevius.5ch.net/test/read.cgi/db/1345121656/14
15: NAME IS NULL [sage] 2012/08/18(土) 02:45:18.67 ID:??? >>14 ページアドレスがnum…。まあいいけど。 データベースにしてもPDO(と言うかPHP)にしても入門書は腐るほど出版されてるから、 とりあえず適当なのを買ってきて読めば一通りのことは出来るようになると思う。 あと、HTTPの仕組みとかも勉強した方がいいかもね。 SQLクエリの実行結果は [DBMS] → [PHP] HTTPステータスは [PHP(と言うかWEBサーバ)]→[WEBブラウザ] ちなみに、今回のは排他制御がかかってる時に同時にUPDATEしようとしてエラーになったらどうするか、の考慮が漏れてるのが問題。 おそらくロック待ちのタイムアウト値が設定されていないので、100回のうちエラーになった分はスルーされてる。 これだけレスしておいてあれだけど、微妙にスレ違い(今のところあんまりSQLite関係ない)だし、ヒントも書いたので、 あとはWEBプログラミング板の適当なスレに移動した方が幸せになれるかもしれない。勉強頑張れ。 http://mevius.5ch.net/test/read.cgi/db/1345121656/15
16: 7 [] 2012/08/18(土) 10:12:45.63 ID:ZAlPZ/Vl >>15 ありがとうございます。 排他中の制御に関してはまったく考慮しておりませんでした。 前の処理が終わるまで順番に待っているだろう くらいの認識でした。 amazonあたりで評価の高そうな本をいくつか見てみたいと思います。 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/db/1345121656/16
17: NAME IS NULL [sage] 2012/08/19(日) 12:50:44.77 ID:??? 外部結合しているテーブルの行をを一度に消す方法はないのでしょうか? 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直後の単語ででてしまいます。 テーブルごとに削除するしかないのでしょうか…? http://mevius.5ch.net/test/read.cgi/db/1345121656/17
18: NAME IS NULL [sage] 2012/08/19(日) 12:58:41.83 ID:??? DELETEはFROM一つしか書けないよ。JOINも当然書けない。 メインのテーブルのレコードを削除したとき必ず従属テーブルのレコードを削除するならトリガーに書きなよ。 http://mevius.5ch.net/test/read.cgi/db/1345121656/18
19: NAME IS NULL [sage] 2012/08/19(日) 13:10:56.17 ID:??? >>18 回答ありがとうございました。 トリガー使ったことないのですが、挑戦してみます。 http://mevius.5ch.net/test/read.cgi/db/1345121656/19
20: NAME IS NULL [sage] 2012/09/01(土) 21:03:38.85 ID:??? ばか http://mevius.5ch.net/test/read.cgi/db/1345121656/20
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 982 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.273s*