標籤:操作 寫入 注釋 指令 硬碟 字元 可擴充 font select
最近在對開發的軟體的伺服器部分製作安裝包,但伺服器部分需要有mysql資料庫的支援。因此,採用免安裝版的mysql策略:將mysql資料庫需要的檔案在安裝程式中進行設定和打包即可。但也遇到了很多問題,下面分三節進行總結。 由於我們採用的是mysql中的innodb儲存引擎,故在此只對innodb作一些介紹,詳細內容可以參見mysql的官網說明http://dev.mysql.com/。 InnoDB概述 InnoDB給MySQL提供了具有提交,復原和崩潰恢複能力的事務安全(ACID相容)儲存引擎。InnoDB鎖定在行級並且也在SELECT語句提供一個Oracle風格一致的非鎖定讀。這些特色增加了多使用者部署和效能。沒有在InnoDB中擴大鎖定的需要,因為在InnoDB中行級鎖定適合非常小的空間。InnoDB也支援FOREIGN KEY強制。在SQL查詢中,你可以自由地將InnoDB類型的表與其它MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。 InnoDB是為處理巨大資料量時的最大效能設計。它的CPU效率可能是任何其它基於磁碟的關聯式資料庫引擎所不能匹敵的。 InnoDB儲存引擎被完全與MySQL伺服器整合,InnoDB儲存引擎為在主記憶體中快取資料和索引而維持它自己的緩衝池。InnoDB儲存它的表&索引在一個資料表空間中,資料表空間可以包含數個檔案(或原始磁碟分割)。這與MyISAM表不同,比如在MyISAM表中每個表被存在分離的檔案中。InnoDB 表可以是任何尺寸,即使在檔案尺寸被限制為2GB的作業系統上。 InnoDB預設地被包含在MySQL二進位分發中。Windows Essentials installer使InnoDB成為Windows上MySQL的預設表。 InnoDB被用來在眾多需要高效能的大型資料庫網站上產生。著名的Internet新聞網站Slashdot.org運行在InnoDB上。Mytrix, Inc.在InnoDB上儲存超過1TB的資料,還有一些其它網站在InnoDB上處理平均每秒800次插入/更新的負荷。InnoDB配置 InnoDB儲存引擎是預設地被允許的。如果你不想用InnoDB表,你可以添加skip-innodb選項到MySQL選項檔案。 被InnoDB儲存引擎管理的兩個重要的基於磁碟的資源是InnoDB資料表空間資料檔案和它的記錄檔。 如果你指定無InnoDB配置選項,MySQL將在MySQL資料目錄下建立一個名為ibdata1的10MB大小的自動擴充資料檔案,以及兩個名為ib_logfile0和ib_logfile1的5MB大小的記錄檔。 注釋:InnoDB給MySQL提供具有提交,復原和崩潰恢複能力的事務安全(ACID相容)儲存引擎。如果擬啟動並執行作業系統和硬體不能如廣告說的那樣運行,InnoDB就不能實現如上能力。許多作業系統或磁碟子系統可能為改善效能而延遲或記錄寫操作。在一些作業系統上,就是系統調用(fsync()) 也要等著,直到所有未寫入已被重新整理檔案的資料在被重新整理到穩定記憶體之前可以確實返回了。因為這個,作業系統崩潰或掉電可能損壞當前提交的資料,或者在最壞的 情況,因為寫操作已被記錄了,甚至破壞了資料庫。如果資料完整性對你很重要,你應該在用任何程式於生產中之前做一些“pull-the-plug”測試。Mac OS X 10.3 及以後版本,InnoDB使用一個特別的fcntl()檔案重新整理方法。在Linux下,建議禁止回寫緩衝。 在ATAPI硬碟上,一個類似hdparm -W0 /dev/hda命令可能起作用。小心某些磁碟機或者磁碟控制卡可能不能禁止回寫緩衝。 注釋:要獲得好的效能,你應該如下面例子所討論那樣,明確提供InnoDB參數。自然地,你應該編輯設定來適合你的硬體和要求。 要建立InnoDB資料表空間檔案,在my.cnf選項檔案裡的[mysqld]節裡使用innodb_data_file_path選項。在Windows上,你可以替代地使用my.ini檔案。innodb_data_file_path的值應該為一個或多個資料檔案規格的列表。如果你命名一個以上的資料檔案,用 分號(‘;’)分隔它們: innodb_data_file_path=datafile_spec1[;datafile_spec2]...例如:把明確建立的具有相同特徵的資料表空間作為預設設定的設定作業如下: [mysqld]innodb_data_file_path=ibdata1:10M:autoextend這個設定配置一個可擴充大小的尺寸為10MB的單獨檔案,名為ibdata1。沒有給出檔案的位置,所以預設的是在MySQL的資料目錄內。 尺寸大小用M或者G尾碼來指定說明單位是MB或者GB。 一個資料表空間,它在資料目錄裡包含一個名為ibdata1的固定尺寸50MB的資料檔案和一個名為ibdata2大小為50MB的自動擴充檔案,其可以像這樣被配置: [mysqld]innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend一個指定資料檔案的完全尾碼包括檔案名稱,它的尺寸和數個可選屬性: file_name:file_size[:autoextend[:max:max_file_size]]autoextend屬性和後面跟著的屬性只可被用來對innodb_data_file_path行裡最後一個資料檔案。 如果你對最後的資料檔案指定autoextend選項。如果資料檔案耗盡了資料表空間中的自由空間,InnoDB就擴充資料檔案。擴充的幅度是每次8MB。 如果磁碟已滿,你可能想要把其它資料添加到另一個硬碟上。重新設定一個已存在資料表空間的指令見15.2.7節,“添加和刪除InnoDB資料和記錄檔”。 InnoDB並不感知最大檔案尺寸,所以要小心檔案系統,在那上面最大的檔案尺寸是2GB。要為一個自動擴充資料檔案指定最大尺寸,請使用max屬性。下列配置允許ibdata1漲到極限的500MB: [mysqld]innodb_data_file_path=ibdata1:10M:autoextend:max:500MInnoDB預設地在MySQL資料目錄建立資料表空間檔案。要明確指定一個位置,請使用innodb_data_home_dir選項。比如,要使用兩個名為ibdata1和ibdata2的檔案,但是要把他們建立到/ibdata,像如下一樣配置InnoDB:[mysqld]
innodb_data_home_dir=/ibdata
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend 注釋:InnoDB不建立目錄,所以在啟動伺服器之前請確認/ibdata目錄的確存在。這對你配置的任何記錄檔目錄來說也是真實的。使用Unix或DOS的mkdir命令來建立任何必需的目錄。 通過把innodb_data_home_dir的值原原本本地部署到資料檔案名,並在需要的地方添加斜杠或反斜線,InnoDB為每個資料檔案形成目錄路徑。如果innodb_data_home_dir選項根本沒有在my.cnf中提到,預設值是“dot”目錄 ./,這意思是MySQL資料目錄。 如果你指定innodb_data_home_dir為一個Null 字元串,你可以為列在innodb_data_file_path值裡的資料檔案指定絕對路徑。下面的例子等價於前面那個例子:[mysqld]
innodb_data_home_dir=
innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend 注意,在一些檔案系統上,資料檔案必需小於2GB。資料檔案的合并尺寸必須至少10MB。 當你第一次建立一個InnoDB資料表空間,最好從命令列來啟動MySQL伺服器。InnoDB然後把資料庫建立的資訊列印到螢幕,所以你可以看見正在發生什麼。比如,在Windows上,如果mysqld-max位於C:\mysql\bin,你可以如下來啟動它:C:\> C:\mysql\bin\mysqld-max --console如果你不發送伺服器輸出到螢幕上,請檢查伺服器的錯誤記錄檔來看在啟動過程中InnoDB列印了什麼。
Mysql資料庫的使用總結之Innodb簡介(一)