麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQLite > 正文

SQLite研究——性能優化

2024-09-07 00:10:06
字體:
來源:轉載
供稿:網友

很多人直接就使用了,并未注意到SQLite也有配置參數,可以對性能進行調整。有時候,產生的結果會有很大影響。

主要通過pragma指令來實現。

比如: 空間釋放、磁盤同步、Cache大小等。

不要打開。前文提高了,Vacuum的效率非常低!

PRAGMA auto_vacuum;
PRAGMA auto_vacuum =
0 | 1;

查詢或設置數據庫的auto-vacuum標記。

正常情況下,當提交一個從數據庫中刪除數據的事務時,數據庫文件不改變大小。未使用的文件頁被標記并在以后的添加操作中 再次使用。這種情況下使用VACUUM命令釋放刪除得到的空間。

當開啟auto-vacuum,當提交一個從數據庫中刪除數據的事務時,數據庫文件自動收縮, (VACUUM命令在auto-vacuum開啟的數據庫中不起作用)。數據庫會在內部存儲一些信息以便支持這一功能,這使得 數據庫文件比不開啟該選項時稍微大一些。

只有在數據庫中未建任何表時才能改變auto-vacuum標記。試圖在已有表的情況下修改不會導致報錯。

建議改為8000

PRAGMA cache_size;
PRAGMA cache_size = Number-of-pages;

查詢或修改SQLite一次存儲在內存中的數據庫文件頁數。每頁使用約1.5K內存,缺省的緩存大小是2000. 若需要使用改變大量多行的UPDATE或DELETE命令,并且不介意SQLite使用更多的內存的話,可以增大緩存以提高性能。

當使用cache_size pragma改變緩存大小時,改變僅對當前對話有效,當數據庫關閉重新打開時緩存大小恢復到缺省大小。 要想永久改變緩存大小,使用default_cache_size pragma.

打開。不然搜索中文字串會出錯。

PRAGMA case_sensitive_like;
PRAGMA case_sensitive_like = 0 | 1;

LIKE運算符的缺省行為是忽略latin1字符的大小寫。因此在缺省情況下'a' LIKE 'A'的值為真。可以通過打開 case_sensitive_like pragma來改變這一缺省行為。當啟用case_sensitive_like,'a' LIKE 'A'為假而 'a' LIKE 'a'依然為真。

打開。便于調試

PRAGMA count_changes;
PRAGMA count_changes = 0 | 1;

查詢或更改count-changes標記。正常情況下INSERT, UPDATE和DELETE語句不返回數據。 當開啟count-changes,以上語句返回一行含一個整數值的數據——該語句插入,修改或刪除的行數。 返回的行數不包括由觸發器產生的插入,修改或刪除等改變的行數。

PRAGMA page_size;
PRAGMA page_size = bytes;

查詢或設置page-size值。只有在未創建數據庫時才能設置page-size。頁面大小必須是2的整數倍且大于等于512小于等于8192。 上限可以通過在編譯時修改宏定義SQLITE_MAX_PAGE_SIZE的值來改變。上限的上限是32768.

如果有定期備份的機制,而且少量數據丟失可接受,用OFF

PRAGMA synchronous;
PRAGMA synchronous = FULL; (2)
PRAGMA synchronous = NORMAL; (1)
PRAGMA synchronous = OFF; (0)

查詢或更改"synchronous"標記的設定。第一種形式(查詢)返回整數值。 當synchronous設置為FULL (2), SQLite數據庫引擎在緊急時刻會暫停以確定數據已經寫入磁盤。 這使系統崩潰或電源出問題時能確保數據庫在重起后不會損壞。FULL synchronous很安全但很慢。 當synchronous設置為NORMAL, SQLite數據庫引擎在大部分緊急時刻會暫停,但不像FULL模式下那么頻繁。 NORMAL模式下有很小的幾率(但不是不存在)發生電源故障導致數據庫損壞的情況。但實際上,在這種情況 下很可能你的硬盤已經不能使用,或者發生了其他的不可恢復的硬件錯誤。 設置為synchronous OFF (0)時,SQLite在傳遞數據給系統以后直接繼續而不暫停。若運行SQLite的應用程序崩潰, 數據不會損傷,但在系統崩潰或寫入數據時意外斷電的情況下數據庫可能會損壞。另一方面,在synchronous OFF時 一些操作可能會快50倍甚至更多。

在SQLite 2中,缺省值為NORMAL.而在3中修改為FULL.

使用2,內存模式。

PRAGMA temp_store;
PRAGMA temp_store = DEFAULT; (0)
PRAGMA temp_store = FILE; (1)
PRAGMA temp_store = MEMORY; (2)

查詢或更改"temp_store"參數的設置。當temp_store設置為DEFAULT (0),使用編譯時的C預處理宏 TEMP_STORE來定義儲存臨時表和臨時索引的位置。當設置為MEMORY (2)臨時表和索引存放于內存中。 當設置為FILE (1)則存放于文件中。temp_store_directory pragma 可用于指定存放該文件的目錄。當改變temp_store設置,所有已存在的臨時表,索引,觸發器及視圖將被立即刪除。

經測試,在類BBS應用上,通過以上調整,效率可以提高2倍以上。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产影院在线观看 | 亚洲精品一区二区三区在线看 | 日本黄色一级视频 | h视频在线免费看 | h色视频在线观看 | h视频在线播放 | 蜜桃视频观看麻豆 | 一级一片免费 | 久久成人免费观看 | 久久成人福利 | 国产精品视频一区二区三区综合 | 毛片免费看的 | 日韩视频一区二区在线观看 | 久久久久久久久久久久久久av | 日本网站在线看 | 欧美性生活久久久 | 欧美三级美国一级 | 影视免费观看 | 国产免费一区二区三区最新不卡 | 国内精品久久久久久久影视红豆 | 欧美三级日本三级少妇99 | 久久久久中精品中文字幕19 | 高清国产午夜精品久久久久久 | 日韩黄站 | 一本色道久久综合狠狠躁篇适合什么人看 | 蜜桃成品人免费视频 | 亚洲国产高清自拍 | 精品一区在线视频 | av大全在线免费观看 | 九九热视频在线 | 成人羞羞网站入口 | 欧美日韩手机在线观看 | 色婷婷av一区二区三区久久 | 欧美成人性生活片 | 黄色av免费网站 | 成人短视频在线观看免费 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 欧美熟videos肥婆 | 少妇色诱麻豆色哟哟 | 小视频在线看 | 久草最新|