fastdb中不同的訪問database的模式在程式中能體現不一樣的結果。
從試驗可以知道,不同訪問模式主要體現在對錶的鎖上。
(具體的試驗,大家如果覺得有必要,可以自己做一下,用
subsql -access [read-only concurrent-read concurrent-update normal]
可以指定訪問資料的模式,然後自己構建相關測試用例進行測試 )
dbdatabase::dballaccess,一旦某個程序使用該模式訪問表,如果該程序使用了insert、update、delete等修改資料的操作,
其他訪問該庫的程序的所有操作(包括open、select)都會被阻塞,直到該操作提交或回滾
dbdatabase::dbconcurrentupdate,使用該模式訪問表,如果某個程序對資料進行修改性的操作,同時另外的程序使用
dbdatabase::dbreadonly或者dbdatabase::dbconcurrentread讀取資料,不會出現阻塞的情況。
但是dbdatabase::dbreadonly會把未提交的髒資料讀出來;而dbdatabase::dbconcurrentread則不會
如果多個程序都使用dbdatabase::dbconcurrentupdate,實際效果和dbdatabase::dballaccess一樣,一旦乙個程序修改了資料,
其他程序所有的操作(包括open、select)都將阻塞,直到該操作提交或回滾
結論:
fastdb沒有提供商用資料庫的記錄鎖甚至是頁級鎖的機制,鎖的範圍是乙個database檔案,
所以在日常的使用過程中:
1、仔細分析業務需求,如果你只需要訪問資料,那麼最好是使用dbdatabase::dbreadonly或者是
dbdatabase::dbconcurrentread。這樣的話,你的訪問操作不會因為這個表被其他程序修改資料而阻塞。
2、如果乙個表有不止乙個使用者,那麼涉及修改資料的程序應該使用dbdatabase::dbconcurrentupdate,
而唯讀的程序使用則使用dbdatabase::dbconcurrentread。
3、如果表只有乙個使用者,則可以根據需要,使用dbdatabase::dballaccess或者dbdatabase::dbreadonly
4、所有的資料修改操作,如果有併發要求,一定要及時提交
關於大小端模式的說明
1 高位元組對應低位址 大端模式 高位元組對應高位址 小端模式 有些cpu是大端 譬如c51微控制器 有些cpu是小端 譬如arm 大部分是用小端模式 2 用c語言寫乙個函式來測試當前機器的大小端模式。用union來測試機器的大小端模式 union myunion int is little end...
關於協議的說明
在object c中,委託和資料來源都是由協議實現的。定義協議的方式與定義類的類的方式非常相似。cpp view plain copy protocol myprotocol void firstmethod void secondmethod end 這個類,本應實現firstmethod 和 s...
關於float的說明
如圖所示,藍色的div和紅色的div處於黑色的div 寬為500px 之中,其中藍色的div設定了做浮動 由圖一 紅色div的margin top為10px,margin left為200px 知 浮動之後藍色div脫離了正常的文件流,而緊接著藍色div的紅色div則公升了上去,這個藍色div浮動層...