Oracle與SQL Server等數據庫的區別
在Oracle中提倡使用一個連接
Oracle處理多個並發語句使用一個連接,大大提升系統能支持的並發量
Oracle運行在32為單進程平台上SGA和PGA最多只能使用2GB內存,多進程平台上SGA最多使用2GB內存,每個PGA也能使用2GB內存,這是Oracle使用Windows平台時需要運行在Data Center版本的Windows系統上的原因
使用綁定變量而不是字面量
Oracle使用綁定變量有兩個好處
實現sql的軟解析
相比與硬解析,解析結果更能得到重用,如果硬解析太多的話,共享池會清理掉一些其他的解析結果導致下次運行是重新解析。執行的解析越多,對共享池的閂競爭就越厲害,等待的隊列越長,時間越久。
能防止sql注入
如果使用綁定變量,就不會遭遇SQL注入攻擊
鎖機制
Oracle只在修改時才對數據加行級鎖
如果只是讀數據,Oracle絕對不會加鎖
Oracle寫操作不會阻塞讀操作
Oracle需要修改已鎖定的數據時會被阻塞
防止更新丟失
Oracle可以使用讀鎖for update鎖定資源實現串行化
for update不會阻塞讀操作
多版本控制
Oracle使用多版本、讀一致實現並發模型
讀一致查詢:對於一個給定的時間點(as of從句后面可以使用系統提交號SCN或者時間點,讀undo日志數據或者歸檔日志實現),查詢會產生一致的結果
非阻塞查詢:查詢的會話不會被寫入會話阻塞
根據多版本讀一致特性可以預知insert into t select * from t插入的數據集
Oracle數據庫不會對列完全為null的數據創建索引
Select * from t where (x = l_v or (x is null and l_v is null))不會用到索引
可以創建函數索引將null值轉化為沒有意義的其他值