資料庫的一些基本知識(1)------資料庫引擎,------資料庫引擎

來源:互聯網
上載者:User

資料庫的一些基本知識(1)------資料庫引擎,------資料庫引擎

MySQL資料庫提供了十三種不同的儲存引擎來應對不同的資料處理。大部分使用過MySQL的人應該都知道MySQL所常用的兩個儲存引擎:MyISAM 和 InnoDB。大多數情況下,MyISAM 是作為MySQL預設的儲存引擎而存在的。事實上我們大多數人在使用MySQL的時候都沒有去配置儲存引擎而直接採用MySQL預設的MyISAM 。如果你需要在特定的表上面使用特定的儲存引擎,你可以使用下面的命令列:

CREATE TABLE tablename (column1, column2, [etc...]) ENGINE = [storage_engine].

那麼什麼是資料庫引擎呢?

簡單說來,一個資料庫的儲存引擎就是用來對資料表進行資訊儲存、處理、查詢等操作。這個世界上不存在十全十美的儲存引擎,但是對於大部分的應用來說,預設的MyISAM 就夠用了。在MySQL內建的10種不同的儲存引擎中,並不是所有的引擎都是可用的。你可以使用下面的命令來查詢你的MySQL伺服器提供的儲存引擎:

代碼:
mysql -uroot -pPassword:mysql> show engines;
這個命令會列出你的伺服器所支援的儲存引擎列表:
  • MyISAM
  • InnoDB
  • MERGE
  • MEMORY (HEAP)
  • BDB (BerkeleyDB)
  • EXAMPLE
  • ARCHIVE
  • CSV
  • BLACKHOLE
  • ISAM
你可以根據你自己的應用需求來選擇對於的儲存引擎。例如,如果你需要儲存大量的日誌資料,那麼你可以使用只支援INSERT和SELECT操作的ARCHIVE 儲存引擎。你可以對你的資料庫伺服器、資料庫或者表格設定特定的儲存引擎,這種靈活的可配置性也是MySQL比起那些只支援單一儲存引擎的資料庫更加受歡迎的原因。

MyISAM

MyISAM 事實上是 ISAM 儲存引擎的一個分支。如果你的應用不需要TRANSACTION,也不需要行層級的鎖(它只提供表層級的鎖),那麼這是選擇MyISAM是最優方案了。MyISAM 特別適合於INSERT/UPDATE操作少而SELECT 操作多的應用情境。當你的應用需要進行大量的INSERT/UPDATE操作時,你需要考慮是否應該換一個儲存引擎,因為表層級的鎖會讓這個操作造成效能問題。

MyISAM 支援的最大行數為 ~4.29E+09,每個表的索引數目限制為64。MyISAM 同時也為 TEXT/BLOB類型的列提供了全索引支援,這樣很方便進行搜尋等操作。

InnoDB

相對於MyISAM, InnoDB提供了更多特性來提升系統效能。這也導致了InnoDB在初始化的時候會比MyISAM花更多的時間,但是這樣帶來的好處遠比初始化額外花的時間要多。其中一個主要的不同就是InnoDB提供了行層級的鎖。這就為並發的 INSERT/UPDATE/DELETE 操作提供了可能,不像MyISAM那樣要等一個操作完成才能進行下一個操作。

同時, InnoDB 還提供了外鍵功能。這可以保證你在往表二插入資料之前表一的相關資料已經存在。而且這還會阻止你在表一中刪除表二所依賴的資料。

InnoDB還提供了資料的緩衝已經在記憶體和磁碟上建立索引,這樣可以大大的提升系統效能。也許對於那些低記憶體的系統來說,這不是一個理想的解決方案,但是對於記憶體足夠的系統來說就不是問題了。


MERGE
MERGE ,從MySQL 3.23.25 開始添加的儲存引擎。它讓使用者可以對一個MyISAM 集合進行統一操作,就像是操作一個表一樣。但是使用這個引擎有一些約束,比如所有的表格都必須是統一的定義。 

MEMORY (HEAP)
HEAP 儲存引擎,也叫做 MEMORY,允許在記憶體裡面建表。MySQL 伺服器會保留表的格式,這樣可以快速的建立一個“trash”表,然後快速的讀取資料以便更好的處理。不過這也使得這個儲存引擎不適合長期的資料處理。

BDB (BerkeleyDB)

BerkeleyDB儲存引擎處理事務安全的表,並以雜湊為基礎的儲存系統。這個儲存引擎適合快速的讀寫某些資料,特別是不同key的資料。但是這個儲存引擎有不少缺點,比如在沒有索引的列上速度很慢。也因為這個原因人們都忽視了它。我還是相信它有它的用武之地。


EXAMPLE

EXAMPLE,從MySQL 4.1.3 開始添加的儲存引擎。這個儲存引擎主要是為程式員服務的。EXAMPLE 提供了建立表的能力,但是無法插入或者查詢資訊。


ARCHIVE
ARCHIVE,從MySQL 4.1.3 開始添加的儲存引擎,它經常被用來儲存大規模資料(無需索引)。這個儲存引擎只支援 INSERT 和 SELECT操作,而且所有的資訊都是被壓縮過的。這些特性讓ARCHIVE很適合用來儲存日誌、交易記錄、賬戶等。不過需要注意的是,在讀取資料的時候,整個表都需要在資料返回之前解壓並讀取。因此這個儲存引擎最適合使用頻率較低的情境。

CSV
CSV, 從MySQL 4.1.4開始添加的儲存引擎,以逗號分隔的字串儲存資料。因此這個儲存引擎不適合大規模的資料存放區或者需要索引的資料表等情境。這個儲存引擎適合將資料轉成spreadsheet 檔案。

BLACKHOLE
這個儲存引擎似乎看起來沒什麼用處,因為它不允許任何資料的儲存或者查詢。因此BLACKHOLE 通常被用來測試資料庫的結構、索引和擦查詢。你仍然可以使用 INSERTS 命令來插入,只不過所有的資料都是void

ISAM
最原始的儲存引擎就是ISAM, 它管理著非事務性表。後來它就被MyISAM 代替了,而且MyISAM 是向後相容的,因此你可以忘記這個ISAM儲存引擎。

總結
總的說來,沒有十全十美的資料庫儲存引擎。對於大多數的應用和DBA來說,選用InnoDB 和 MyISAM 基本就夠用了。但是也要記住,InnoDB 和 MyISAM 雖然比較通用,但是它們並不是對所有的情境都是完美支援的,也許其他的儲存引擎可以很好地支援你的應用。



下一集預告:

資料庫事務隔離機制及特點;


參考文獻:

1、http://www.linux.org/threads/an-introduction-to-mysql-storage-engines.4220/


常用的資料庫引擎有什

1.資料庫引擎
Microsoft JET (Joint Engineering Technologe) 是Access和Visual Basic所提供的內嵌資料庫功能的核心元素。JET是一種全能關聯式資料庫引擎,可用來處理大多數中小型資料庫。所謂資料庫引擎是應用程式和資料庫儲存之間的一種介面,它將與資料庫有關的記憶體管理、遊標管理和錯誤管理等具體而複雜的細節問題抽象為一個既高度一致又簡化的編程介面。
Jet資料庫引擎包含在一組動態連結程式庫(DLL)檔案中,在運行時,這些檔案被連結到Visual Basic程式。它把應用程式的請求翻譯成對.mdb檔案或其他資料庫的物理操作。它真正讀取、寫入和修改資料庫,並處理所有內部事務,如索引、鎖定、安全性和參考完整性等。它還包含一個查詢處理器,用於接收並執行結構化查詢語言 (SQL)(SQL)的查詢來實現所需的資料庫操作。另外,Jet資料庫引擎還包含一個結果處理器.用來管理查詢所返回的結果。
2.ODBC
Open DataBase Connectivity(ODBC,開放資料庫互連)是由Microsoft定義的一種資料庫訪問標準,它提供一種標準的資料庫存取方法以訪問不同平台的資料庫。一個ODBC應用程式既可以訪問在本地PC機上的資料庫,也可以訪問多種異構平台上的資料庫,例如SQL Server、Oracle或者DB2。
ODBC本質上是一組資料庫訪問API(應用編程介面),但編程人員通過ODBC訪問資料庫時無需深入理解ODBC函數就可以訪問ODBC功能,這是因為象Visual Basic這樣的開發工具都提供了一些對象封裝了ODBC函數。
3.OLE DB
OLE DB是Microsoft開發的最新資料庫提供者,Microsoft將其定義為ODBC接班人。與ODBC類似,OLE DB提供了對關聯式資料庫的訪問,同時在此基礎上,它對ODBC所提供的功能進行了一部分的擴充。作為一種標準的介面,OLE DB可以訪問所有類型的資料,包括關聯式資料庫、dBase等ISAM(索引序列存取方法)類型的檔案、甚至E-MAIL或者Windows 2000活動目錄等。
OLE DB應用程式可以分為兩種:OLE DB提供者(OLE DB Provider)和OLE DB使用者(OLE DB Consumer),OLE DB使用者就是使用OLE DB介面的應用程式,而OLE DB提供者負責訪問資料來源,並通過OLE DB介面向OLE DB使用者提供資料。
 
資料庫引擎 什是資料庫引擎誰可以詳細介紹一下

SQL Server FullText Search (MSSQLSERVER):全文檢索索引服務
如果有全文索引的話要啟動SQL Server FullText Search 沒有的話啟動不啟動沒有影響的

SQL Server Agent 是一個任務規劃器和警示管理器,在實際應用和環境下,您可以將那些周期性的活動定義成一個任務,而讓其在SQL Server Agent 的協助下自動運行;假如您是一名系統管理員,則可以利用SQL Server Agent 向您通知一些警告資訊,來定位出現的問題從而提高管理效率。SQL Server Agent 主要包括以下幾個組件:作業;警報;操作。
主要執行以下步驟在SQL Server Enterprise Manager 中配置SQL Server Agent:

(1) 啟動SQL Server Enterprise Manager, 登入到指定的伺服器開啟Management 檔案夾,啟動SQL Server Agent。
(2) 右擊SQL Server Agent 表徵圖,在快顯功能表中選擇Properties 選項。開啟SQL Server Agent Properties 對話方塊,選中General 標籤頁。17-1 所示。其中各選項的含義為:
System account: 定義SQL Server Agent 運行於哪個系統帳號下,該系統帳號是sysadmin 角色的成員;
This account: 定義SQL Server Agent 運行於哪一個NT 帳號下,該帳號必須是運行SQL Server Agent 伺服器上的sysadmin 角色,選擇此選項,必須在Password處提供密碼。常在下列情況中選中該選項:
把事件轉寄到其它NT 電腦的應用日誌;
如何來建立一個作業,該作業要使用多個電腦上的資源;
通過電子郵件或呼叫通知操作員訊息。
Mail Profile 有效郵件設定檔名,該檔案儲存通過SQL Mail 為SQL ServerAgent 運行帳號配置的郵件系統正常工作的配置資訊;
Save copies of the sent messages in the Sent Items folder: 指定發送訊息存放的檔案目錄;
File name: 指定SQL Server Agent 記錄檔名,預設名為C:\Mssql7\Log\Sqlagent.out;
Error message pop-up recipient 指定接收網路彈出錯誤訊息的接收者名字,這些錯誤訊息由SQL Server Agent 寫入它的錯誤記錄檔。
(3) 選中Advanced 標籤頁
Auto restart SQL Server if it stops unexpectedly :表示如果SQL Server 意外停止運行,則將自動重新啟動;
Auto restart SQL Server Agent if it stops unexpectedly: 表示如果SQL Server Agent意外停止運行,則將自動重新啟動;
Forward events to a different server: 表示將事件轉寄給其它伺服器。在Server 旁的下拉式清單中選擇接收伺服器;
Unhandled events: 表示轉寄那些不是在本機伺服器上處理的事件;All 表示所有事件;
If error has sever......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.