SQLite學習筆記(8)

來源:互聯網
上載者:User

線程:

          SQLite的很多版本支援多線程。

          共用快取模型:

                    允許一個進程中的多個串連使用共同的頁緩衝。用於嵌入式伺服器的情況比較多。

                    Thread →Server→con→Page Cache→database。

                   共用快取模式中,線程依賴於伺服器線程協助管理資料庫串連。線程通過某種通訊機制想伺服器發送SQL語句,伺服器使用線程分配的串連執行他們,返回結果。線程可以繼續發出命令控制自己的事務,只是實際串連存在於其他線程中並有其他的線程管理。

                   共用快取模式的串連使用不同的並行存取模型和隔離等級。注意同族串連的更改內容。

                   讀未提交隔離等級:

                             編譯指示read_uncommited,串連就是讀未提交隔離等級。

            解鎖通知:

                     新版本的SQLite的包含的函數:sqlite3_unlock_notify();

                     聲明:

                              int  sqlite3_unlock_notify(

                                                                            sqlite3 *  pBlocked,  /*等待的串連*/

                                                                            void  (* xNotify ) (void  **apArg , int  nArg)             /*要觸發的回呼函數*/

                                                                            void   *pNotifyArg                                                           /*傳遞給xNotify 的參數*/ 

                                                                          ); 

                     如果因為代碼競爭沒有獲得共用鎖定,那麼將要返回SQLITE_LOCKED;此時調用函數sqlite3_unlock_notify(),在阻塞串連上(第一個參數)上註冊回呼函數XNotify;

回呼函數可以有任何參數。

                      擁有阻塞鎖的串連將會觸發xNotify回調,作為完成事務的sqlite3_step( )或者sqlite3_close()的一部分。多線程調用  sqlite3_unlock_notify()時,事務可能已經完成了。此時,回呼函數將會從sqlite3_unlock_notify()內初始化。每個阻塞串連上只會有一個註冊解鎖/通知回呼函數;不可重新進入,回呼函數中應咩有其他函數調用;使用Drop的時候,可能會出差錯。

          線程與記憶體管理:

                      與記憶體管理相關聯的函數(指定堆的大小、限定堆棧):

                      void    sqlite3_soft_heap_limit(int  N) ;  將軟堆設定為N位元組。如果使用的記憶體超過了N,將會調用下一個函數sqlite3_release_memory(int N) ,返回實際釋放的位元組數。

                      int       sqlite3_release_memory(int N) ;        

                      預設這些函數是空操作,除非編譯SQLite時,啟動預先處理命令指令:SQLITE_ENABLE_MEMORY_MANAGENENT.

                   

         

          

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.