oracle和mysql區別及相關知識補充

2021-08-28 08:00:25 字數 2137 閱讀 5160

併發性是oltp資料庫最重要的特性,但併發涉及到資源的獲取、共享與鎖定。

on-line transaction processing

聯機事務處理

過程(oltp)

簡介:最大優點是可以即時地處理輸入的資料,及時地回答。也稱為

實時系統

(real time system)。

oltp是由前台、應用、資料庫共同完成的,處理快慢以及處理程度取決於資料庫引擎、伺服器、應用引擎。

oltp 資料庫旨在使

事務應用程式僅寫入所需的資料,以便盡快處理單個事務。

併發(concurrency)和並行(parallellism)是:

解釋一:並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。

解釋二:並行是在不同實體上的多個事件,併發是在同一實體上的多個事件

解釋三:在一台處理器上「同時」處理多個任務,在多台處理器上同時處理多個任務。如hadoop分布式集群

所以併發程式設計的目標是充分的利用處理器的每乙個核,以達到最高的處理效能。

併發主要是針對伺服器而言,是否併發的關鍵是看使用者操作是否對伺服器產生了影響。因此同一時間間隔在與伺服器進行了互動的事件。

oracle與mysql區別

一 .併發性

mysql:

mysql以表級鎖為主,對資源鎖定的粒度很大,如果乙個session對乙個表加鎖時間過長,會讓其他session 無法更新此表中的資料。

雖然innodb引擎的表可以用行級鎖,但這個行級鎖的機制依賴於表的索引,如果表沒有索引,或者sql語句沒有使用索引,那麼仍然使用表級鎖。

oracle:

oracle使用行級鎖,對資源鎖定的粒度要小很多,只是鎖定sql需要的資源,並且加鎖是在資料庫中的資料行上,不依賴與索引。所以oracle對併發性的支援要好很多。

補充

頁級:引擎 bdb。

表級:引擎 myisam , 理解為鎖住整個表,可以同時讀,寫不行

行級:引擎 innodb , 單獨的一行記錄加鎖

表級,直接鎖定整張表,在你鎖定期間,其它程序無法對該錶進行寫操作。如果你是寫鎖,則其它程序則讀也不允許

行級,,僅對指定的記錄進行加鎖,這樣其它程序還是可以對同乙個表中的其它記錄進行操作。

頁級,表級鎖速度快,但衝突多,行級衝突少,但速度慢。所以取了折衷的頁級,一次鎖定相鄰的一組記錄。

鎖是計算機協調多個程序或執行緒併發訪問某一資源的機制,不同的資料庫的鎖機制大同小異。由於資料庫資源是一種供許多使用者共享的資源,所以如何保證資料併發訪問的一致性、有效性是所有資料庫必須解決的乙個問題,鎖衝突也是影響資料庫併發訪問效能的乙個重要因素。了解鎖機制不僅可以使我們更有效的開發利用資料庫資源,也使我們能夠更好地維護資料庫,從而提高資料庫的效能。

上述三種鎖的特性可大致歸納如下:

1) 表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。

2) 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。

3)頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般。

mysql表級鎖有兩種模式:

表共享讀鎖(table read lock)和表獨佔寫鎖(table write lock)。

就是說對myisam表進行讀操作時,它不會阻塞其他使用者對同一表的讀請求,但會阻塞對同一表的寫操作;

而對myisam表的寫操作,則會阻塞其他使用者對同一表的讀和寫操作。

innodb有兩種模式的行鎖:

1)共享鎖:允許乙個事務去讀一行,阻止其他事務獲得相同資料集的排他鎖。

( select * from table_name where ......lock in share mode)

2)排他鎖:允許獲得排他鎖的事務更新資料,阻止其他事務取得相同資料集的共享讀鎖和排他寫鎖。(select  * from table_name where.....for update)

行級鎖不是單獨存在的,當事務獲得了某些資料行上的行級鎖時,此事務同時獲得了資料行所屬表上的表級鎖,因為表級鎖能夠防止系統中併發地執行有衝突的 ddl 操作,避免當前事務中的資料操作被併發地ddl 操作影響。

MySQL 和Oracle 查詢區別

有以下兩種寫法 一 select a.id,a.url,b.campaign,b.groups,b.keywords where a.id b.ad id and a.name bat 20120418142217 二 在oracle 中兩種查詢幾乎沒有區別,但在mysql 中有10倍以上的差異 在...

MySql和Oracle的區別

1.mysql和oracle的日期轉換 mysql中有2種日期格式date和time,oracle只有一種日期格式date。oracle select to char sysdate,yyyy mm dd from dual oracle select to char sysdate,hh24 mi...

mysql和oracle的區別

兩者相比較的話,簡單的說,mysql比較小,而且免費,開源的緣故,現在也很健壯,若不是大型應用的話,mysql足以應付一切。oracle比較龐大,整個體系都很健全。簡單的說mysql是實用很好用,oracle就是很好很強大。這樣的說法我認為還是不夠確切的,實際上,用mysql支撐的google的資料...