1. 程式人生 > >909422229__Mysql與Oracle區別以及悲觀鎖與樂觀鎖機制

909422229__Mysql與Oracle區別以及悲觀鎖與樂觀鎖機制

1.MysqlOracle的區別:

事務:

oracle很早就完全支援事務。

mysql在innodb儲存引擎的行級鎖的情況下才支援事務,在安裝Mysql的時候可以選擇是否支援事務,可支援,可不支援。如果查詢用的多則可以安裝不支援事務。

提交事務:

oracle預設不自動提交,需要使用者手動提交。

mysql預設是自動提交

分頁語句:

Oracle的分頁是rownum偽劣,然後between and進行分頁查詢

Mysql的分頁是LIMIT,後面兩個值,分頁代表從從第幾行開始,需要展示多少行資料。

例如:12.代表從第一行開始,下次會直接讀第二行,獲取兩個資料,分別是34

價格:

Mysql是開源免費的,Oracle是收費的。

sql語句的擴充套件和靈活性

mysql對sql語句有很多非常實用而方便的擴充套件,比如limit功能,insert可以一次插入多行資料,select某些管理資料可以不加from。

oracle在這方面感覺更加穩重傳統一些

隔離級別:

Oracle支援讀提交與序列化讀。

Mysql只支援讀提交

市場佔有:

Oracle是大型資料庫,市場佔有比較大。Mysql是中小型資料庫,市場佔有比較小

資料庫的隔離級別?

資料庫的隔離級別有4個分別從低到高依次是

Read uncommitted(讀未提交)可能出現髒讀,不可重複讀,幻影讀.

Read

committed(讀提交)oracle的隔離級別,可能發生不可重複讀,幻影讀

Repeatable read(重複讀)Mysql的隔離級別,可能出現幻影讀

Serializable(序列化)是最高的事務隔離級別,效能很低一很少使用

悲觀鎖與樂觀鎖

悲觀鎖:比較悲觀,每次執行都認為有人在操作,都會在執行前都鎖定,等執行結束後別人才可以使用。傳統的資料庫都用到了,例如現在Mysqll中的行級鎖、表鎖、讀鎖、寫鎖

樂觀所:比較樂觀,每次執行都認為沒人在操作,所以不會上鎖,但是在更新的時候會判斷一下再次期間是否有人操作,利用版本號進行判斷,

樂觀鎖適用於多讀的應用型別,這樣可以提高吞吐量,像資料庫如果提供類似於

write_condition機制的其實都是提供的樂觀鎖。