亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQLite 中文指南之FAQ第3/6頁

 更新時間:2008年09月12日 18:09:17   作者:  
sqllite使用過程中碰到的一些問題解決,中文版

但是,client/server型的數(shù)據(jù)庫引擎 (如 PostgreSQL, MySQL, 以及 Oracle) 通常支持更高的并發(fā)度, 并支持多進程同時寫入同一個數(shù)據(jù)庫。由于總有一個控制良好的服務(wù)器協(xié)調(diào)數(shù)據(jù)庫的訪問,這才保證了以上 特性的實現(xiàn)。如果你的應(yīng)用需要很高的并發(fā)度,你應(yīng)該考慮使用client/server數(shù)據(jù)庫。事實上,經(jīng)驗告訴 我們大多數(shù)應(yīng)用所需要的并發(fā)度比他們的設(shè)計者們想象的要少得多。

當(dāng) SQLite 嘗試操作一個被另一個進程鎖定的文件時,缺省的行為是返回 SQLITE_BUSY。你可以用 C代碼更改這一行為。 使用 sqlite3_busy_handler() 或sqlite3_busy_timeout() API函數(shù)。

如果兩個或更多進程同時打開同一個數(shù)據(jù)庫,其中一個進程創(chuàng)建了新的表或索引,則其它進程可能不能立即看見新的表。其它進程可能需要關(guān)閉并重新連結(jié)數(shù)據(jù)庫。

(8) SQLite是線程安全的嗎?

有時候是的。為了線程安全,SQLite 必須在編譯時把 THREADSAFE 預(yù)處理宏設(shè)為1。在缺省的發(fā)行的已編譯版本中 Windows 版的是線程安全的,而 Linux 版的不是。如果要求線程安全,Linux 版的要重新編譯。

“線程安全”是指二個或三個線程可以同時調(diào)用獨立的不同的sqlite3_open() 返回的"sqlite3"結(jié)構(gòu)。而不是在多線程中同時使用同一個 sqlite3 結(jié)構(gòu)指針。

一個sqlite3結(jié)構(gòu)只能在調(diào)用 sqlite3_open創(chuàng)建它的那個進程中使用。你不能在一個線程中打開一個數(shù)據(jù)庫然后把指針傳遞給另一個線程使用。這是因為大多數(shù)多線程系統(tǒng)的限制(或 Bugs?)例如RedHat9上。在這些有問題的系統(tǒng)上,一個 線程創(chuàng)建的fcntl()鎖不能由另一個線程刪除或修改。由于SQLite依賴fcntl()鎖來進行并發(fā)控制,當(dāng)在線程間傳遞數(shù)據(jù)庫連接時會出現(xiàn)嚴(yán)重的問題。

也許在Linux下有辦法解決fcntl()鎖的問題,但那十分復(fù)雜并且對于正確性的測試將是極度困難的。因此,SQLite目前不允許在線程間共享句柄。

在UNIX下,你不能通過一個 fork() 系統(tǒng)調(diào)用把一個打開的 SQLite 數(shù)據(jù)庫放入子過程中,否則會出錯。

(9) 如何列出一個 SQLite 數(shù)據(jù)庫中的所有的表/索引?

在sqlite3 命令行程序中你可以用命令 ".tables" 來顯示所有的表或者用 ".schema"來顯示所有的表結(jié)構(gòu)和索引。但命令后不要跟 LIKE 語句,否則會限制表的顯示。

相關(guān)文章

最新評論