計算機系統效能**比的不斷提高迫切要求硬體、軟體結構的改進。硬體方面,單純依靠提高微處理器速度和縮小體積來提高效能**比的方法正趨於物理極限;磁碟技術的發展滯後於微處理器的發展速度,使得磁碟 i/o 頸瓶問題日益突出。軟體方面,資料庫伺服器對大型資料庫各種複雜查詢和聯機事務處理 (oltp) 的支援使得對響應時
並行資料庫新記錄
間和吞吐量的要求顧此失彼。同時,應用的發展超過了主機處理能力的增長速度,資料庫應用 (dsss , olap 等 ) 的發展對資料庫的效能和可用性提出了更高要求,能否為越來越多的使用者維持高事務吞吐量和低響應時間已成為衡量 dbms 效能的重要指標。
計算機多處理器結構以及並行資料庫伺服器的實現為解決以上問題提供了極大可能。隨著計算機多處理器結構和磁碟陣列技術的進步,並行計算機系統的發展十分迅速,出現了 seqnent 等商品化的並行計算機系統。為了充分可法多處理器硬體,並行資料庫的設計者必須努力開發面向軟體的解決方案。為了保持應用的可移植性,這一領域的多數工作都圍繞著支援 sql 查詢語言進行。目前已經有一些關聯式資料庫產品在並行計算機上不同程度地實現了並行性。
將資料庫管理與並行技術結合,可以發揮多處理器結構的優勢,從而提供比相應的大型機系統要高的多的效能**比和可用性。通過將資料庫在多個磁碟上分布儲存,可以利用多個處理器對磁碟資料驚醒並行處理,從而解決了磁碟 i/o 瓶頸問題。同樣,潛在的主存訪問瓶頸也可以通過開發查詢間並行性 ( 即不同查詢並行執行 ) ,查詢內並行性 ( 即同提查詢內的操作並行執行 ) 以及操作內並行性 ( 即子操作並行執行 ) ,從而大大提高查詢效率。
並行資料庫系統的功能有:
乙個並行資料庫系統可以作為伺服器面向多個客戶機進行服務。典型的情況是,客戶機嵌入特定應用軟體,如圖形介面, dbms 前端工具 4gl 以及客戶機 / 伺服器介面軟體等。因此,並行資料庫系統應該支援資料庫功能,客戶機 / 伺服器結構功能以及某些通用功能 ( 如執行 c 語言程式等 ) 。此外,如果系統中有多個伺服器,那麼每個伺服器還應包含額外的軟體層來提供分布透明性。
對於客戶機 / 伺服器體系結構的並行資料庫系統,它所支援的功能一般包括:
會話管理子系統。提供對客戶與伺服器之間互動能力的支援。
請求管理子系統。負責接收有關查詢編譯和執行的客戶請求,觸發相應操作並監管事務的執行與提交。
資料管理子系統。提供並行編譯後查詢所需的所有底層功能,例如並行事務支援,高速緩衝區管理等。
上述功能構成類似於乙個典型的 rdbms ,不同的是並行資料庫必須具有處理並行性,資料劃分,資料複製以及分布事務等的能力。依賴於不同的並行系統體系結構,乙個處理器可以支援上述全部功能或其子集。
並行資料庫的結構:
並行資料庫系統的實現方案多種多樣。根據處理器與磁碟及記憶體的相互關係可以將並行計算機結構劃分為三種基本的型別,下面分別介紹這三種基本的並行系統結構,並從效能,可用性和可擴充性等三個方面來比較這些方案。
shared-memory( 共享記憶體 ) 結構,又稱 shared-everything 結構,簡稱 se 結構。
shared-memory 方案中,任意處理器可通過快速互連 ( 高速匯流排或縱橫開關 ) 訪問任意記憶體模組或磁碟單元,即所有記憶體與磁碟為所有處理器共享, ibm3090 , bull 的 dps8 等大型機以及 sequent , encore 等對稱多處理器都採用了這一設計方案。
並行資料庫系統中, xprs , dbs3 以及 volcano 都在 shared-memory 體系結構上獲得實現。但是迄今為止,所有的共享記憶體商用產品都只開發了查詢間並行性,而尚未實現查詢內並行性。
訪問資料庫 資料庫並行訪問
作者姓名 neo chen 陳景峰 暱稱 netkiller 呼號 bg7nyt 手機 86 13113668890 多維度架構 知乎 www.zhihu.com 這裡主要講述有關開發中遇到的資料庫並行問題 防止並行顯示背景 我們有乙個order訂單表,工作流如下 建立訂單 訂單分配 訂單審核 批准...
資料庫表 行 資料庫鎖定
1如何鎖乙個表的某一行 settransaction isolation level read uncommitted select from table rowlock where id 1 2鎖定資料庫的乙個表 select from table with holdlock 加鎖語句 sybas...
Python進行資料庫操作
python要對資料庫進行操作,首先要進行 python sql 連線,在 python 中進行資料庫連線的模組有 mysqldb pymysql,兩種連線方式用法一樣。以pymysql為例進行講解 安裝方法 linux ubuntu sudo pip install pymysql windows...