909422229__Mysql與Oracle區別以及悲觀鎖與樂觀鎖機制
1.Mysql與Oracle的區別:
事務:
oracle很早就完全支援事務。
mysql在innodb儲存引擎的行級鎖的情況下才支援事務,在安裝Mysql的時候可以選擇是否支援事務,可支援,可不支援。如果查詢用的多則可以安裝不支援事務。
提交事務:
oracle預設不自動提交,需要使用者手動提交。
mysql預設是自動提交
分頁語句:
Oracle的分頁是rownum偽劣,然後between and進行分頁查詢
Mysql的分頁是LIMIT,後面兩個值,分頁代表從從第幾行開始,需要展示多少行資料。
例如:1,2.代表從第一行開始,下次會直接讀第二行,獲取兩個資料,分別是3,4
價格:
Mysql是開源免費的,Oracle是收費的。
sql語句的擴充套件和靈活性
mysql對sql語句有很多非常實用而方便的擴充套件,比如limit功能,insert可以一次插入多行資料,select某些管理資料可以不加from。
oracle在這方面感覺更加穩重傳統一些。
隔離級別:
Oracle支援讀提交與序列化讀。
Mysql只支援讀提交
市場佔有:
Oracle是大型資料庫,市場佔有比較大。Mysql是中小型資料庫,市場佔有比較小
資料庫的隔離級別?
資料庫的隔離級別有4個分別從低到高依次是
Read uncommitted(讀未提交)可能出現髒讀,不可重複讀,幻影讀.
Read
Repeatable read(重複讀)Mysql的隔離級別,可能出現幻影讀
Serializable(序列化)是最高的事務隔離級別,效能很低一很少使用
悲觀鎖與樂觀鎖
悲觀鎖:比較悲觀,每次執行都認為有人在操作,都會在執行前都鎖定,等執行結束後別人才可以使用。傳統的資料庫都用到了,例如現在Mysqll中的行級鎖、表鎖、讀鎖、寫鎖
樂觀所:比較樂觀,每次執行都認為沒人在操作,所以不會上鎖,但是在更新的時候會判斷一下再次期間是否有人操作,利用版本號進行判斷,
樂觀鎖適用於多讀的應用型別,這樣可以提高吞吐量,像資料庫如果提供類似於