<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 第1章:一般信息 MySQLR軟件提供了十分快速的多線程、多用戶、牢靠的SQL(結構化查詢語言)數據庫服務器。 MySQL服務器定位于任務關鍵型、重負荷生產系統,并能嵌入在大量部署的軟件中。MySQL是MySQL AB的注冊商標。 MySQL軟件采用雙許可方式。用戶可根據GNU通用公共許可([http://www.fsf.org/licenses/](http://www.fsf.org/licenses/))條款,將MySQL軟件作為開放源碼產品使用,或從MySQL AB公司購買標準的商業許可證。關于我方許可策略的更多信息,請參見[http://www.mysql.com/company/legal/licensing/](http://www.mysql.com/company/legal/licensing/)。 在下面的清單中,介紹了本手冊感興趣的一些特殊部分。 - 關于MySQL數據庫服務器的討論,請參見[1.4.2 “MySQL的的主要特性”](# "1.4.2.?The Main Features of MySQL")。 - 關于安裝說明,請參見[第2章:安裝MySQL](# "Chapter?2.?Installing MySQL")。 - 關于將MySQL數據庫軟件移植到新體系結構或操作系統方面的技巧,請參見[附錄](#)[E:_移植到其他系統_](# "Appendix?E.?Porting to Other Systems")。 - 關于從5.0版向上升級的更多信息,請參見[2.10.1節,“從5.0版升級”](# "2.10.1.?Upgrading from Version 5.0")。 - 關于MySQL數據庫服務器的教程說明,請參見[第3章:教程](# "Chapter?3.?Tutorial")。 - 關于SQL示例和標準程序信息,請參見標準程序目錄(在本發布版中,為sql-bench)。 - 關于新特性和缺陷更正的歷史信息,請參見[附錄](#)[D:_MySQL變更史_](# "Appendix?D.?MySQL Change History")。 - 關于當前已知缺陷和錯誤特性的列表,請參見[A.8 “MySQL中的已知事宜”](# "A.8.?Known Issues in MySQL")。 - 關于未來計劃,請參見[1.6 “MySQL發展大事記”](# "1.6.?MySQL Development Roadmap")。 - 關于本項目所有貢獻人的清單,請參見[附錄C:感謝](# "Appendix?C.?Credits")。 **重要說明:** 請將錯誤報告(通常稱為缺陷)以及問題和評論發送到[http://bugs.mysql.com](http://bugs.mysql.com)。請參見[1.7.1.3 “如何通報缺陷和問題”](# "1.7.1.3.?How to Report Bugs or Problems")。 如果在MySQL服務器中發現敏感的安全缺陷,請使用電子郵件立刻通知我們:[security@mysql.com](#)。 ### 1.1.?關于本手冊 這是關于5.1版至5.1.2-alpha版MySQL數據庫系統的參考手冊。該手冊不適用于舊版本MySQL軟件,這是因為在MySQL 5.1和以前的版本存在很多功能性差異和其他差異。如果正在使用MySQL軟件的較舊版本,請參閱_MySQL 5.0參考手冊_,該手冊涵蓋了MySQL 5.0,或參閱_MySQL 4.1參考手冊_,該手冊涵蓋了MySQL 3.22、3.23、4.0和4.1系列。在手冊的文本中,通過引用發布版本號(5.1.x),注明了MySQL 5.1的二級版本。 由于本手冊是作為參考手冊而編制的,在本手冊中未提供關于SQL或關聯數據庫概念的一般說明。在本手冊中,也不包含如何使用操作系統或命令行解釋器方面的信息。 [MySQL數據庫軟件始終在發展,參考手冊也會相應地頻繁更新。本手冊的最新版本以在線方式提供,請使用]()[http://dev.mysql.com/doc/](http://dev.mysql.com/doc/)上的搜索表單。也提供多重其他格式,包括HTML、PDF、和Windows CHM版本。 主要文檔是[DocBook](http://docbook.org/) XML文件的集合。對于HTML版本和其他格式,它們是使用[DocBook XSL stylesheets](http://docbook.sourceforge.net/release/xsl/current/doc/reference.html)自動生成的。 如果你有任何關于本手冊應增加內容或更正內容方面的建議,請將其發送給文檔編制團隊:[docs@mysql.com](#)。 本手冊最初是由David Axmark和Michael “Monty” Widenius編制的。由MySQL文檔編制團隊負責維護,團隊成員包括Paul DuBois、Stefan Hinz、Mike Hillyer和Jon Stephens。關于中多其他貢獻人,請參見[附錄C:感謝](# "Appendix?C.?Credits")。 本手冊的版權歸瑞典公司MySQL AB所有。MySQLR和MySQL徽標均是MySQL AB的注冊商標。本手冊中引用的其他商標和注冊商標是相應所有人的財產,在本手冊中僅將其用于辨識目的。 ### 1.2.?本手冊采用的慣例 [本手冊采用了特定的印刷慣例:]() ·???????? 這類風格的文本用于SQL語句,數據庫、表和列名稱,C和Perl代碼,以及環境變量。例如: 要想重新加載授權表,請使用FLUSH PRIVILEGES語句。 **這類風格的文本**用于指明鍵入的數如信息。 ·???????? **這類風格的文本**用于指明可執行程序和腳本的名稱,例如**mysql**(MySQL命令行客戶端程序)和**mysqld**(MySQL服務器執行程序)。 ·???????? _這類風格的文本_用于變量輸入,應使用你選擇的值替換它。 ·???????? 文件名和目錄名采取下述方式: “全程my.cnf位于目錄/etc下”。 ·???????? 字符序列采取下述方式: “要想使用通配符,請使用字符%”。 ·???????? _這類風格的文本_用于強調。 ·???????? **這類風格的文本**用于表頭,并用于傳遞強調信息。 當出現準備在特定程序中執行的命令時,該程序將由位于命令前的提示符指明。例如,shell>指明命令將從注冊外殼程序中執行,mysql>指明命令將從**mysql客戶端**程序中執行: shell> type a shell command here(在此輸入shell命令) mysql> type a mysql statement here(在此輸入mysql語句) “shell”是命令解釋程序。在Unix平臺上,它通常是程序,如**sh**、**csh**或**bash**。在Windows平臺下,等效程序為**command.com**或**cmd.exe**,通常運行在控制臺窗口中。 輸入示例中顯示的命令或語句時,不要輸入示例中給出的提示符。 數據庫、表和;列名必須代入語句中。為了指明該代入是必要的,在本手冊中使用了_db_name_、_tbl_name_和_col_name。_例如,你將見到如下所示的語句: mysql> SELECT col_name FROM db_name.tbl_name; 這意味著,如果你輸入了類似的語句,應提供你的數據庫、表和列名,如下例所示: mysql> SELECT author_name FROM biblio_db.author_list; SQL關鍵字不區分大小寫,因此即可為大寫也可為小寫。在本手冊中采用大寫。 在語法介紹中,方括號(“[”和“]”)用于指明可選字或子句。例如,在下面的語句中,IF EXISTS是可選的: DROP TABLE [IF EXISTS] tbl_name 當某一語法成分由多個可選項組成時,可選項應用豎線“|”分開。當可能選擇一組選擇中的某一成員時,可選項將列在方括號(“[”和“]”)中。 TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) 當必須選擇一組選擇中的某一成員時,可選項將列在大括號(“{”和“}”)中。 {DESCRIBE | DESC} tbl_name [col_name | wild] 省略號(…)表明省略了語句的某一選擇,通常是為了提供復雜語法的簡短表述。例如,INSERT ... SELECT是后跟SLECT語句的INSERT語句的簡短形式。 省略號還能指明語句的前部分語法元素可重復。在下面的示例中,可給定多個_reset_option_值,第1個值后每一個可由逗號分開: RESET reset_option [,reset_option] ... 對于用來設置shell變量的命令,采用Bourne shell語法給出。例如,用于設置環境變量的序列和運行命令的序列,與下述Bourne shell語法給出的類似: shell> VARNAME=value some_command [如果你正在使用**csh**或**tcsh**,必須使用略有不同的命令。應執行與下例所示類似的序列:]() shell> setenv VARNAME value shell> some_command ### 1.3.?MySQL AB概述 MySQL AB是由MySQL創始人和主要開發人創辦的公司。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典創辦的。 我們致力于開發MySQL數據庫軟件,并向新用戶宣傳推廣它。MySQL AB擁有MySQL源代碼、MySQL徽標和(注冊)商標、以及本手冊的版權。請參見 [1.4 “MySQL數據庫管理系統概述”](# "1.4.?Overview of the MySQL Database Management System")。 MySQL的核心價值取向指明了我們對MySQL和開發源碼的貢獻。 這些核心價值取向規定了MySQL AB與MySQL服務器軟件的協作方式: ·???????? 成為世界上最好和使用最廣泛的數據庫。 ·???????? 面向所有人,而且所有人均能支付得起。 ·???????? 使用簡單。 ·???????? 在保持快速和安全的同時不斷改進。 ·???????? 使用和改進充滿樂趣。 ·???????? 不存在缺陷。 這就是MySQL AB公司及其雇員的核心價值取向。 ·???????? 我們同意開放源碼理念,并支持開放源碼群。 ·???????? 我們的目標是成為最佳公民。 ·???????? 我們傾向于那些與我們有共同價值取向和思想傾向的合作伙伴。 ·???????? 我們將回復電子郵件并提供支持。 ·???????? 我們是一家與其他方聯系在一起的“虛擬”公司。 ·???????? 我們反對軟件專利。 在MySQL的網站([http://www.mysql.com/](http://www.mysql.com/))上,給出了關于MySQL和MySQL的最新信息。 順便提及一下,公司名中的“AB”是瑞典語“aktiebolag”或“股份公司”的首字母縮寫。可將其翻譯為“MySQL有限公司”。事實上,MySQL有限公司和MySQLGmbH均是MySQL AB子公司的名稱。它們分別位于美國和德國。 ### 1.4.?MySQL數據庫管理系統概述 [ 1.4.1. MySQL的歷史](#)[ 1.4.2. MySQL的的主要特性](#)[ 1.4.3. MySQL穩定性](#)[ 1.4.4. MySQL表最大能達到多少](#)[ 1.4.5. 2000年兼容性](#) MySQL是最流行的開放源碼SQL數據庫管理系統,它是由MySQL AB公司開發、發布并支持的。MySQL AB是由多名MySQL開發人創辦的一家商業公司。它是一家第二代開放源碼公司,結合了開放源碼價值取向、方法和成功的商業模型。 在MySQL的網站([http://www.mysql.com/](http://www.mysql.com/))上,給出了關于MySQL和MySQL的最新信息。 ·???????? MySQL是一種數據庫管理系統。 數據庫是數據的結構化集合。它可以是任何東西,從簡單的購物清單到畫展,或企業網絡中的海量信息。要想將數據添加到數據庫,或訪問、處理計算機數據庫中保存的數據,需要使用數據庫管理系統,如MySQL服務器。計算機是處理大量數據的理想工具,因此,數據庫管理系統在計算方面扮演著關鍵的中心角色,或是作為獨立的實用工具,或是作為其他應用程序的組成部分。 - MySQL是一種關聯數據庫管理系統。 關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大的倉庫內。這樣就增加了速度并提高了靈活性。MySQL的SQL指得是“結構化查詢語言”。SQL是用于訪問數據庫的最常用標準化語言,它是由ANSI/ISO SQL標準定義的。SQL標準自1986年以來不斷演化發展,有數種版本。在本手冊中,“SQL-92”指得是1992年發布的標準,“SQL:1999”指得是1999年發布的標準,“SQL:2003”指得是標準的當前版本。我們采用術語“SQL標準”標示SQL標準的當前版本。 - MySQL軟件是一種開放源碼軟件。 “開放源碼”意味著任何人都能使用和改變軟件。任何人都能從Internet下載MySQL軟件,而無需支付任何費用。如果愿意,你可以研究源碼并進行恰當的更改,以滿足你自己的需求。MySQL軟件采用了GPL(GNU通用公共許可證),[http://www.fsf.org/licenses/](http://www.fsf.org/licenses/),定義了在不同情況下可以用軟件作的事和不可作的事。如果你對GPL不滿意,或需要在商業應用程序中嵌入MySQL代碼,可從我方購買商業許可版本。更多信息,請參見MySQL許可概述([http://www.mysql.com/company/legal/licensing/](http://www.mysql.com/company/legal/licensing/))。 - MySQL數據庫服務器具有快速、可靠和易于使用的特點。 如果它正是你所尋找的,不妨一試。MySQL服務器還有一套實用的特性集合,這些特性是通過與我們用戶的密切合作而開發的。在我們的基準測試主頁上,給出了MySQL服務器和其他數據庫管理器的比較結果。請參見[7.1.4 “MySQL基準套件”](# "7.1.4.?The MySQL Benchmark Suite")。 MySQL服務器最初是為處理大型數據庫而開發的,與已有的解決方案相比,它的速度更快,多年以來,它已成功用于眾多要求很高的生產環境。盡管MySQL始終在不斷發展,但目前MySQL服務器已能提供豐富和有用的功能。它具有良好的連通性、速度和安全性,這使的MySQL十分適合于訪問Internet上的數據庫。 - MySQL服務器工作在客戶端/服務器模式下,或嵌入式系統中。 MySQL數據庫軟件是一種客戶端/服務器系統,由支持不同后端的1個多線程SQL服務器,數種不同的客戶端程序和庫,眾多管理工具和廣泛的應用編程接口API組成。 我們還能以嵌入式多線程庫的形式提供MySQL服務器,你可以將其鏈接到你的應用程序,從而獲得更小、更快、和更易管理的產品。 - 有大量可用的共享MySQL軟件。 你所喜歡的應用程序和語言均支持MySQL數據庫服務器,這種情況十分可能。 “MySQL”的正式發音是“My Ess Que Ell”(而不是“my sequel”),但我們并不介意你的發音方式是“my sequel”或其他當地方式。 ### 1.4.1.?MySQL的歷史 我們最初的出發點是,使用mSQL來連接我們的表,這類表采用了我們的快速低層面(ISAM)子程序。然而,經過一些測試后,我們得出結論,mSQL的速度或靈活性不足以滿足我們的要求。其結果是,為我們的數據庫提供了新的SQL接口,但API接口與mSQL的幾乎一樣。設計該API的目的在于,允許將為mSQL編寫的第三方代碼方便地移植到MySQL。 MySQL名稱的起源不明。10多年來,我們的基本目錄以及大量庫和工具均采用了前綴“my”。不過,共同創辦人Monty Widenius的女兒名字也叫“My”。時至今日,MySQL名稱的起源仍是一個迷,即使對我們也一樣。 MySQL Dolphin(我方徽標)的名稱為“Sakila”,它是由MySQL AB公司的創辦人從用戶在“Dolphin命名”比賽中提供的眾多建議中選定的。該名稱是由來自非洲斯威士蘭的開放源碼軟件開發人Ambrose Twebaze提出的。根據Ambrose的說法,按斯威士蘭的本地語言,女性化名稱Sakila源自SiSwati。Sakila也是坦桑尼亞、Arusha地區的一個鎮的鎮名,靠近Ambrose的母國烏干達。 ### 1.4.2.?MySQL的的主要特性 下面介紹了MySQL數據庫軟件的一些重要特性。關于當前特性和即將提供特性的更多信息,,請參見[1.6節,“MySQL發展大事記”](# "1.6.?MySQL Development Roadmap") 。 ·???????? 內部構件和可移植性 o??????? 使用C和C++編寫 o??????? 用眾多不同的編譯器進行了測試 o??????? 能夠工作在眾多不同的平臺上。請參見[2.1.1 “MySQL支持的操作系統”](# "2.1.1.?Operating Systems Supported by MySQL")。 o??????? 使用GNU Automake、Autoconf和Libtool進行移植。 o??????? 提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API。請參見[第25章:API和庫](# "Chapter?25.?APIs and Libraries")。 o??????? 采用核心線程的完全多線程 如果有多個CPU,它能方便地使用這些CPU。 o??????? 提供了事務性和非事務性存儲引擎。 o??????? 使用了極快的“B樹”磁盤表(MyISAM)和索引壓縮。 o??????? 添加另一個存儲引擎相對簡單。如果打算為內部數據庫添加一個SQL接口,該特性十分有用。 o??????? 極快的基于線程的內存分配系統。 o??????? 通過使用優化的“單掃描多連接”,能實現極快的連接。 o??????? 存儲器中的哈希表用作臨時表。 o??????? SQL函數是使用高度優化的類庫實現的,運行很快。通常,在完成查詢初始化后,不存在存儲器分配。 o??????? 采用Purify(商業內存溢出檢測器)以及GPL工具Valgrind([http://developer.kde.org/~sewardj/](http://developer.kde.org/~sewardj/))測試了MySQL代碼。 o??????? 服務器可作為單獨程序運行在客戶端/服務器聯網環境下。它也可作為庫提供,可嵌入(鏈接)到獨立的應用程序中。這類應用程序可單獨使用,也能在網絡環境下使用。 - 列類型 - 眾多列類型: 帶符號/無符號整數,1、2、3、4、8字節長,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,TIME,DATETIME,TIMESTAMP,YEAR,SET,ENUM,以及OpenGIS空間類型。請參見[第11章:列類型](# "Chapter?11.?Column Types")。 - 定長和可變長度記錄。 - 語句和函數 - 在SELECT和查詢的WHERE子句中,提供完整的操作符和函數支持。例如: mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000 AND age > 30; - 對SQL GROUP BY和ORDER BY子句的全面支持。支持聚合函數(COUNT(), COUNT(DISTINCT ...),AVG(),STD(),SUM(),MAX(),MIN()和GROUP_CONCAT())。 - 支持LEFT OUTER JOIN和RIGHT OUTER JOIN,采用標準的SQL和ODBC語法。 - 按照標準SQL的要求,支持表別名和列別名。 - DELETE、INSERT、REPLACE和UPDATE返回更改(影響)的行數。連接到服務器時,可通過設置標志返回匹配的行數。 - MySQL的SHOW命令可用于檢索關于數據庫、數據庫引擎、表和索引的信息。EXPLAIN命令可用于確定優化器處理查詢的方式。 - 函數名與表名或列名不沖突。例如,ABS是有效的列名。唯一的限制在于,調用函數時,函數名和隨后的符號“(”之間不得有空格。請參見[9.6 “MySQL中保留字的處理”](# "9.6.?Treatment of Reserved Words in MySQL")。 - 可以將不同數據庫的表混合在相同的查詢中(就像MySQL 3.22中那樣)。 - 安全 - 十分靈活和安全的權限和密碼系統,允許基于主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼安全。 - 可伸縮性和限制 - 處理大型數據庫: 我們使用了MySQL服務器和含5千萬條記錄的數據庫。我們還聽說,有些用戶將MySQL用于含60000個表和約50億行的數據庫。 - 每個表可支持高達64條索引(在MySQL 4.1.2之前為32條)。每條索引可由1~16個列或列元素組成。最大索引寬度為1000字節(在MySQL 4.1.2之前為500)。索引可使用具備CHAR、VARCHAR、BLOB或TEXT列類型的列前綴。 - 連接性 - 在任何平臺上,客戶端可使用TCP/IP協議連接到MySQL服務器。在Windows系統的NT系列中(NT、2000、XP或2003),客戶端可使用命名管道進行連接。在Unix系統中,客戶端可使用Unix域套接字文件建立連接。 - 在MySQL 4.1和更高的版本中,如果是以“--shared-memory”選項開始,Windows服務器還支持共享內存連接。客戶端可使用“--protocol=memory”選項,通過共享內存建立連接。 - Connector/ODBC (MyODBC)接口為使用ODBC(開放式數據庫連接性)連接的客戶端程序提供了MySQL支持。例如,可以使用MS Access連接到你的MySQL服務器。客戶端可運行在Windows或Unix平臺上。提供了MyODBC源。支持所有的ODBC 2.5函數,以及眾多其他函數。請參見[第26章:連接器](# "Chapter?26.? Connectors")。 - Connector/J接口為使用JDBC連接的Java客戶端程序提供了MySQL支持。客戶端可運行在Windows或Unix平臺上。提供了Connector/J源碼。請參見[第26章:連接器](# "Chapter?26.? Connectors")。 - 本地化 - 服務器可使用多種語言向客戶端提供錯誤消息。請參見[5.10.2節,“設置錯誤消息語言”](# "5.10.2.?Setting the Error Message Language")。 - 對數種不同字符集的全面支持,包括latin1 (cp1252)、german、big5、ujis等。例如,在表名和列名中允許使用斯堪的納維亞字符‘a’、‘a’和‘o’。從MySQL 4.1開始,提供了Unicode支持。 - 所有數據均以所選的字符集保存。正常字符串列的比較不區分大小寫。 - 分類是根據所選的字符集(默認情況下,使用瑞典校對)進行的。啟動MySQL服務器時,可更改該項設置。要想查看高級分類的示例,請參見Czech分類代碼。MySQL服務器支持眾多不同的字符集,這類字符集可在編譯時和運行時指定。 - 客戶端和工具 - MySQL服務器提供了對SQL語句的內部支持,可用于檢查、優化和修復表。通過**mysqlcheck**客戶端,可在命令行上使用這類語句。MySQL還包括**myisamchk**,這是一種很快的命令行實用工具,可用于在MyISAM表上執行這類操作。請參見[第5章:數據庫管理](# "Chapter?5.?Database Administration")。 - 對于所有MySQL程序,均能通過“-help”或“-?”選項調用,以獲取聯機幫助信息。 ### 1.4.3.?MySQL穩定性 本節回答了如下問題:“MySQL服務器有多穩定?”,以及“在本項目中我能依靠MySQL服務器嗎”? 我們將嘗試闡明這類問題,并回答很多潛在用戶關心的某些重要問題。本節所給出的信息基于通過郵件列表收集的數據,在確定問題和通報使用類型方面,郵件列表十分有用。 最初的代碼可回溯至20世紀80年代初。它提供了穩定的編碼基數,最初存儲引擎使用的ISAM表格式仍保持向后兼容性。在MySQL AB公司的前身TcX,自1996年中期以來,MySQL代碼在多個項目中工作良好,未出現任何問題。當MySQL數據庫軟件首次向更廣泛的公眾發布時,我們的用戶很快發現了一些未經測試的代碼段。自那以后,盡管每個新版本具有很多新的特性,但每次新發布的版本均存在少量的移植性問題。 每次發布的MySQL服務器均是可用的。僅當用戶嘗試源自“灰色區域”的代碼時才會出現問題。當然,新用戶不了解“灰色區域”是什么。因此,在本節中,我們介紹了目前已知的這類區域。本節所作的介紹主要針對MySQL服務器3.23版和更高版本。在最新的版本中,更正了所有已知和通報的缺陷,但“缺陷”一節所列的除外,這類缺陷與設計有關。請參見[A.8節,“MySQL中的已知事宜”](# "A.8.?Known Issues in MySQL")。 [MySQL服務器采用了多層設計和獨立模塊。在此列出了一些較新的模塊,并指明了它們的測試情況。]() ·???????? Replication(穩定) 大量使用復制功能的服務器均處于生產模式下,結果良好。在MySQL 5.x中,將繼續增強復制功能。 ·???????? InnoDB表(穩定) 自3.23.49版以來,InnoDB事務存儲引擎一直很穩定。InnoDB正用于大型、重負荷生產系統。 ·???????? BDB表(穩定) Berkeley DB碼十分穩定,但在MySQL服務器中,我們仍在改進BDB事務存儲引擎。 ·???????? 全文本搜索(穩定) 全文本搜索的使用范圍十分廣泛。在MySQL 4.0和4.1中,增加了重要的特性增強。 ·???????? MyODBC 3.51(穩定) MyODBC 3.51采用了ODBC SDK 3.51,并廣泛用于生產活動中。某些出現的情況看上去與應用程序相關,與ODBC驅動程序或底層數據庫服務器無關。 ### 1.4.4.?MySQL表最大能達到多少 MySQL 3.22限制的表大小為4GB。由于在MySQL 3.23中使用了MyISAM存儲引擎,最大表尺寸增加到了65536TB(2567– 1字節)。由于允許的表尺寸更大,MySQL數據庫的最大有效表尺寸通常是由操作系統對文件大小的限制決定的,而不是由MySQL內部限制決定的。 InnoDB存儲引擎將InnoDB表保存在一個表空間內,該表空間可由數個文件創建。這樣,表的大小就能超過單獨文件的最大容量。表空間可包括原始磁盤分區,從而使得很大的表成為可能。表空間的最大容量為64TB。 在下面的表格中,列出了一些關于操作系統文件大小限制的示例。這僅是初步指南,并不是最終的。要想了解最新信息,請參閱關于操作系統的文檔。 <table border="1" cellpadding="0" id="table1"><tr><td> <p><b>操作系統</b></p></td> <td> <p><b>文件大小限制</b></p></td> </tr><tr><td> <p><span>Linux 2.2-Intel 32-bit</span></p></td> <td> <p><span>2GB (LFS: 4GB)</span></p></td> </tr><tr><td> <p><span>Linux 2.4+</span></p></td> <td> <p><span>(using ext3 filesystem) 4TB</span></p></td> </tr><tr><td> <p><span>Solaris 9/10</span></p></td> <td> <p><span>16TB</span></p></td> </tr><tr><td> <p><span>NetWare w/NSS filesystem</span></p></td> <td> <p><span>8TB</span></p></td> </tr><tr><td> <p><span>win32 w/ FAT/FAT32</span></p></td> <td> <p><span>2GB/4GB</span></p></td> </tr><tr><td> <p><span>win32 w/ NTFS</span></p></td> <td> <p><span>2TB</span>(可能更大)</p></td> </tr><tr><td> <p><span>MacOS X w/ HFS+</span></p></td> <td> <p><span>2TB</span></p></td> </tr></table> 在Linux 2.2平臺下,通過使用對ext2文件系統的大文件支持(LFS)補丁,可以獲得超過2GB的MyISAM表。在Linux 2.4平臺下,存在針對ReiserFS的補丁,可支持大文件(高達2TB)。目前發布的大多數Linux版本均基于2.4內核,包含所有所需的LFS補丁。使用JFS和XFS,petabyte(千兆兆)和更大的文件也能在Linux上實現。然而,最大可用的文件容量仍取決于多項因素,其中之一就是用于存儲MySQL表的文件系統。 關于Linux中LFS的詳細介紹,請參見Andreas Jaeger的“Linux中的大文件支持”頁面:[http://www.suse.de/~aj/linux_lfs.html](http://www.suse.de/~aj/linux_lfs.html)。 Windows用戶請注意: FAT和VFAT (FAT32)不適合MySQL的生產使用。應使用NTFS。 在默認情況下,MySQL創建的MyISAM表允許的最大尺寸為4GB。你可以使用SHOW TABLE STATUS語句或**myisamchk -dv ****_tbl_name_**檢查表的最大尺寸。請參見[13.5.4節,“SHOW語法”](# "13.5.4.?SHOW Syntax")。 如果需要使用大于4GB的MyISAM表(而且你的操作系統支持大文件),可使用允許AVG_ROW_LENGTH和MAX_ROWS選項的CREATE TABLE語句。請參見[13.1.5節,“CREATE TABLE語法”](# "13.1.5.?CREATE TABLE Syntax")。創建了表后,也可以使用ALTER TABLE更改這些選項,以增加表的最大允許容量。請參見[13.1.2節,“ALTER TABLE語法”](# "13.1.2.?ALTER TABLE Syntax")。 處理MyISAM表文件大小的其他方式: ·???????? 如果你的大表是只讀的,可使用**myisampack**壓縮它。**myisampack**通常能將表壓縮至少50%,因而,從結果上看,可獲得更大的表。此外,**myisampack**還能將多個表合并為1個表。請參見[8.2節,“myisampack:生成壓縮、只讀MyISAM表”](# "8.2.?myisampack — Generate Compressed, Read-Only MyISAM Tables")。 ·???????? MySQL包含一個允許處理MyISAM表集合的MERGE庫,這類MyISAM表具有與單個MERGE表相同的結構。請參見[15.3節,“MERGE存儲引擎”](# "15.3.?The MERGE Storage Engine")。 ### 1.4.5.?2000年兼容性 MySQL服務器本身不存在2000年(Y2K)兼容性問題: ·???????? MySQL服務器采用了Unix的時間功能,對于TIMESTAMP值,可處理的日期至2037年。對于DATE和DATETIME值,可接受的日期可至9999年。 ·???????? 所有的MySQL日期函數均是在1個源文件sql/time.cc中實現的,并經過了恰當編碼以確保2000年安全。 ·???????? 在MySQL 3.22和以后的版本中,YEAR列類型能夠在1個字節內保存0年以及1901~2155年,并能使用兩位或四位數字顯示它們。所有的兩位數字年份均被視為介于1970~2069年之間,這意味著,如果你在YEAR列中保存了01,MySQL服務器會將其當作2001年。 通過下面的簡單演示示例,表明MySQL服務器在處理直至9999年的DATE或DATETIME值方面不存在問題,在處理2030年以前的TIMESTAMP值方面也不存在問題: mysql> DROP TABLE IF EXISTS y2k; Query OK, 0 rows affected (0.01 sec) ? mysql> CREATE TABLE y2k (date DATE, ??? ->?????????????????? date_time DATETIME, ??? ->?????????????????? time_stamp TIMESTAMP); Query OK, 0 rows affected (0.01 sec) ? mysql> INSERT INTO y2k VALUES ??? -> ('1998-12-31','1998-12-31 23:59:59',19981231235959), ??? -> ('1999-01-01','1999-01-01 00:00:00',19990101000000), ??? -> ('1999-09-09','1999-09-09 23:59:59',19990909235959), ??? -> ('2000-01-01','2000-01-01 00:00:00',20000101000000), ??? -> ('2000-02-28','2000-02-28 00:00:00',20000228000000), ??? -> ('2000-02-29','2000-02-29 00:00:00',20000229000000), ??? -> ('2000-03-01','2000-03-01 00:00:00',20000301000000), ??? -> ('2000-12-31','2000-12-31 23:59:59',20001231235959), ??? -> ('2001-01-01','2001-01-01 00:00:00',20010101000000), ??? -> ('2004-12-31','2004-12-31 23:59:59',20041231235959), ??? -> ('2005-01-01','2005-01-01 00:00:00',20050101000000), ??? -> ('2030-01-01','2030-01-01 00:00:00',20300101000000), ??? -> ('2040-01-01','2040-01-01 00:00:00',20400101000000), ??? -> ('9999-12-31','9999-12-31 23:59:59',99991231235959); Query OK, 14 rows affected (0.01 sec) Records: 14? Duplicates: 0? Warnings: 2 ? mysql> SELECT * FROM y2k; +------------+---------------------+----------------+ | date????? ?| date_time?????????? | time_stamp???? | +------------+---------------------+----------------+ | 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 | | 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 | | 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 | | 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 | | 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 | | 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 | | 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 | | 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 | | 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 | | 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 | | 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 | | 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 | | 2040-01-01 | 2040-01-01 00:00:00 | 00000000000000 | | 9999-12-31 | 9999-12-31 23:59:59 | 00000000000000 | +------------+---------------------+----------------+ 14 rows in set (0.00 sec) 最后2個TIMESTAMP列的值為0,這是因為年份值(2040,9999)超出了TIMESTAMP的最大范圍。TIMESTAMP數據類型用于保存當前時間,在32位機器上,支持的取值范圍是19700101000000~20300101000000(帶符號值)。在64位機器上,TIMESTAMP能處理的值達2106(無符號值)。 盡管MySQL服務器本身不存在2000年安全問題,但如果使用了存在Y2K問題的應用程序,也會遇到問題。例如,很多早期的應用程序采用2位數值(兩可性)而不是4位數值來保存和處理年份數據。這類問題可能會被使用“00”或“99”的應用程序合并為“丟失”值指示符。很不幸,這類問題或許很難更正,這是因為不同的應用程序是由不同的程序員編寫的,每位程序員可能使用了不同的慣例集和日期處理函數。 [因此,盡管MySQL服務器不存在Y2K問題,但應用程序須提供無歧義的輸入值。關于MySQL服務器在處理含2位年份數值的兩可性日期輸入數據方面的作用,請參見]()[11.3.4節,“Y2K事宜和日期類型”](# "11.3.4.?Y2K Issues and Date Types") 。 ### 1.5.?MaxDB數據庫管理系統概述 [ 1.5.1. 什么是MaxDB?](#)[ 1.5.2. MaxDB的歷史](#)[ 1.5.3. MaxDB的特性](#)[ 1.5.4. 許可和支持](#)[ 1.5.5. MaxDB和MySQL之間的特性差異](#)[ 1.5.6. MaxDB和MySQL之間的協同性](#)[ 1.5.7. 與MaxDB有關的鏈接](#) MaxDB是一種大型高效的企業數據庫。數據庫管理通過了SAP認證。 MaxDB是數據庫管理系統的新名稱,以前稱為SAP DB。2003年,SAP AG和MySQL AB確立了合作伙伴關系,并將數據庫系統重命名為MaxDB。自此以后,MaxDB的開發一直由SAP開發者團隊負責,就像以前那樣。 MySQL AB與MaxDB團隊在SAP處保持著密切的合作,以不斷改進MaxDB產品。兩者的聯合努力包括:開發新的固有驅動程序,以便能夠在開發源碼社區中更有效地使用MaxDB,并不斷改善各種文檔,以拓展MaxDB的用戶基數。此外,MySQL和MaxDB數據庫的協同性也被視為一項重要因素,例如,新的MaxDB同步管理器支持從MaxDB到MySQL的數據同步。 MaxDB數據庫管理系統和MySQL數據庫管理系統未共享公用編碼基數。MaxDB和MySQL數據庫管理系統是由MySQL AB公司提供的獨立產品。 MySQL AB為MaxDB提供了全面的專業服務組合。 ### 1.5.1.?什么是MaxDB? MaxDB是兼容ANSI SQL-92(入門級)、由SAP AG提供的關聯數據庫管理系統(RDBMS),也可由MySQL AB提供。MaxDB能夠滿足企業級應用的要求: 安全性,可伸縮性,高度并行性,以及強大的性能。它能運行在所有主要的操作系統下。多年的經歷表明,它能運行,并能在24x7的運作中運行數以TB計的數據。 數據庫開發是于1977年在柏林技術大學作為一個研究項目開始的。在20世紀80年代早期,它發展成為數據庫產品,隨后歸Nixdorf、Siemens Nixdorf、Software AG所有,目前歸SAP AG所有。在這一發展歷程中,它先后被命名為VDN、Reflex、Supra 2、DDB/4、Entire SQL-DB-Server和ADABAS D。1997年,SAP從軟件AP手中接管了該軟件,并將其重新命名為SAP DB。自2000年10月起,依GNU通用公共許可的名義發布了眾多的SAP DB源碼(請參見[附錄J:GNU通用公共許_可_](# "Appendix?J.?GNU General Public License"))。 2003年,SAP AG和MySQL AB確立了合作伙伴關系,并將數據庫系統重命名為MaxDB。 ### 1.5.2.?MaxDB的歷史 MaxDB的歷史可追溯至SAP DB、SAP AG的DBMS,也就是說,MaxDB是SAP DB的重命名和增強版本。多年來,MaxDB已成功用于mySAP業務套件的小型、中性和大型安裝實例,以及需要企業級DBMS的其他要求苛刻的SQL應用(涉及用戶數、事務工作量、以及數據庫的大小)。 除了第三方數據庫系統外,如Oracle、Microsoft SQL Server以及IBM DB2,SAP DB意味著另一種選擇。2000年10月,SAP AG依 GNU GPL許可(請參見[附錄J:GNU通用公共許_可_](# "Appendix?J.?GNU General Public License"))發布了SAP DB,從而使得其成為開放源碼軟件。 目前,MaxDB已被世界各地約3500個SAP客戶使用。不僅如此,在SAP的IT部門內,大多數安裝在Unix和Linux平臺上的DBMS均依賴于MaxDB。MaxDB正轉向重負荷聯機事務處理(OLTP),用戶數以千計,數據庫的大小從數百GB到數TB。 2003年,SAP和MySQL確立了合作伙伴關系,并達成了開發合作協議。作為其結果,自7.5版發布以來(2003年11月),SAP的數據庫系統SAP DB以MySQL的MaxDB名義提供。 MaxDB 7.5版是SAP DB 7.4編碼基數的直接改進。因此,MaxDB軟件7.5版可用于SAP DB 7.2.04版和更高版本的直接升級。 與以往相同,目前,位于SAP AG的前SAP DB開發團隊仍負責MaxDB的開發和支持。MySQL AB與位于SAP的MaxDB團隊密切合作,致力于改進MaxDB產品,請參見[1.5節,“MaxDB數據庫管理系統概述”](# "1.5.?Overview of the MaxDB Database Management System")。SAP AG和MySQL AB均負責MaxDB的銷售和分發。MaxDB和MySQL服務器的提升促進了企業協作,從而使得兩種產品系列均從中受益。 與SAP解決方案一起提供之前,或放在MySQL站點供下載之前,MaxDB受SAP AG全面質量保證計劃的控制。 ### 1.5.3.?MaxDB的特性 MaxDB是一種大型、通過SAP認證的開放源碼數據庫,可用于OLTP和OLAP,它具有高的可靠性、可用性和可伸縮性,以及相當完善的特性集。它定位于大型mySAP商業套件環境,以及需要最大企業級數據庫功能的其他應用,此外,它還補充了MySQL數據庫服務器。 MaxDB是采用客戶端/服務器模式運作的產品。開發它的目的在于滿足OLTP和數據倉庫/OLAP/決策支持方面的安裝需求。**優點:** ·???????? **簡單的配置和管理:** 基于GUI(圖形化用戶界面)的安裝管理器和數據庫管理器,可作為DBMS操作的單個管理工具。 ·???????? **不間斷操作,無需計劃的停機時間,也不需要持久性維護**:自動空間管理,無需重組。 ·???????? **精心設計的備份和恢復能力**:聯機備份和增量備份,恢復向導以指導你完成整個恢復步驟。 ·???????? **支持大量用戶,數TB的數據庫大小,以及苛刻的工作量要求:** 高的可靠性,性能和可伸縮性 ·???????? **高可用性:** 簇支持,待機配置,熱待機配置 ### 1.5.4.?許可和支持 使用MySQL AB提供的其他產品的許可證,可使用MaxDB。因此,可在GNU通用公共許可下以及商業許可下使用MaxDB。關于許可的更多信息,請訪問[http://www.mysql.com/company/legal/licensing/](http://www.mysql.com/company/legal/licensing/)。 MySQL AB負責為非SAP客戶提供MaxDB技術支持。MaxDB支持可在各種層面上提供(基本,銀質和金質),將無限的電子郵件/Web支持擴展為對業務關鍵系統的全天候電話支持。 當MaxDB與Sap應用程序(如SAP NetWeaver和mySAP商業套件)一起使用時,MySQL AB還能為其提供許可證和支持。關于能滿足您需求的許可和支持方面的更多信息,[請聯系](http://www.mysql.com/company/contact/)MySQL AB。 我們也提供咨詢和培訓服務。MySQL將定期提供MaxDB課程,關于課程表,請參見[http://www.mysql.com/training/](http://www.mysql.com/training/)。 ### 1.5.5.?MaxDB和MySQL之間的特性差異 MaxDB是MySQL AB公司通過SAP認證的數據庫。MaxDB數據庫服務器補充了MySQL AB產品系列。某些MaxDB特性在MySQL數據庫服務器上不可用,反之亦然。 下面簡要介紹了MaxDB和MySQL的主要差別,但并不完全。 ·???????? MaxDB是采用客戶端/服務器模式運作的系統。MySQL能夠作為客戶端/服務器系統運行,也能作為嵌入式系統運行。 ·???????? MaxDB或許不能運行在MySQL支持的所有平臺上。 ·???????? MaxDB采用了針對客戶端/服務器通信的專有網絡協議。MySQL采用了TCP/IP(采用或未采用SSL加密)、套接字協議(類似Unix的系統下)或命名管道(Windows NT系列下)。 ·???????? MaxDB支持存儲程序。對于MySQL,在5.0版本中實現了存儲程序。MaxDB還支持通過SQL擴展進行的觸發程序編程,該功能計劃在MySQL 5.1中實現。MaxDB包含針對存儲程序語言的調試程序,能夠將多個嵌套式觸發程序串聯在一起,而且每個動作和行均支持多個觸發程序。 ·???????? MaxDB的發布采用了基于文本、圖形或Web的用戶界面。MySQL的發布僅采用基于文本的用戶界面:圖形化用戶界面(MySQL控制中心、MySQL管理器)與主發布版本是單獨提供的。針對MySQL的基于Web的用戶界面是由第三方提供的。 ·???????? MaxDB支持多種也被MySQL支持的編程接口。為了使用MaxDB進行開發,還提供了MaxDB ODBC驅動程序,SQL數據庫連通(SQLDBC),JDBC驅動程序,Perl和Python模塊,以及MaxDB PHP擴展(通過使用PHP來訪問MySQL MaxDB數據庫)。第三方編程接口: 支持OLE DB、ADO、DAO、RDO、以及.NET和ODBC。MaxDB支持嵌入式SQL和C/C++。 ·???????? MaxDB包含MySQL不具備的管理特性: 按時間、事件和告警進行規劃安排,并能在達到告警閾值時將消息發送給數據庫管理器。 ### 1.5.6.?MaxDB和MySQL之間的協同性 MaxDB和MySQL是獨立的數據庫管理服務器。系統間的協同性是可能的,通過相應的方式,系統能夠彼此交換數據。要想在MaxDB和MySQL之間交換數據,可使用系統的導入和導出工具,或MaxDB同步管理器。對于導入和導出工具,可在手動模式下傳輸數據(很少出現)。MaxDB同步管理器提供了更快的數據傳輸功能。 MaxDB裝載器可用于導出數據和對象定義。裝載器能夠以MaxDB內部二進制格式和文本格式(CSV)導出數據。對于以文本格式從MaxDB導出的數據,可使用**mysqldump**數據庫備份程序將其重新導入到MySQL中。要想將MySQL數據導入到MaxDB,可使用**mysqldump**創建INSERT語句或SELECT ... INTO OUTFILE語句以創建文本文件(CSV)。使用MaxDB裝載器裝載由MySQL生成的數據文件。 可以使用MaxDB裝載器和MySQL工具**mysqldump**,在系統間交換數據定義。由于兩種系統使用的SQL“方言”略有差異,而且MaxDB擁有目前尚不被MySQL支持的特性(如SQL約束),我們建議以手動方式調整定義文件。**Mysqldump**工具提供了“--compatible-name = maxdb”選項來生成與MaxDB兼容的輸出,以便使移植更為簡單。 作為MaxDB 7.6的組成部份,發布了MaxDB同步管理器。同步管理器支持數個MaxDB實例間的異步復制。但是,也設計規劃了協同特性,因此,同步管理器支持復制到MySQL服務器的操作,以及來自MySQL服務器的復制操作。 在首次發布的版本中,同步管理器支持將數據插入到MySQL。這意味著,在開始時僅支持從MaxDB到MySQL的復制。在2005年的安排中,將增加把數據從MySQL服務器導出到同步管理器的功能,因而增加了對從MySQL到MaxDB的復制支持。 ### 1.5.7.?與MaxDB有關的鏈接 關于MaxDB信息的主頁位于[http://www.mysql.com/products/maxdb](http://www.mysql.com/products/maxdb)。在該頁面上,詳細介紹了MaxDB數據庫管理系統的特性,并提供了指向文檔的多個超級鏈接。 除了本章給出的介紹外,MySQL參考手冊不含任何MaxDB文檔。MaxDB有自己的文檔,稱為MaxDB庫。MaxDB庫可從下述網址獲得:[http://dev.mysql.com/doc/maxdb/index.html](http://dev.mysql.com/doc/maxdb/index.html)。 MySQL AB運行著一個關于MaxDB的社區郵件列表,請參見[http://lists.mysql.com/maxdb](http://lists.mysql.com/maxdb)。該列表給出了生動活潑的社區討論。很多核心開發人員均為其提供了相應的貢獻。產品發布將被發送至該列表。 [MaxDB的Web論壇網址是]()[http://forums.mysql.com/](http://forums.mysql.com/)。該論壇主要處理關于MaxDB的問題,而不是關于SAP應用程序的問題。 ### 1.6.?MySQL發展大事記 [ 1.6.1. MySQL 5.1的新特性](#) 在本節中,介紹了MySQL發展歷程中的重要事件,包括各種MySQL版本中已實現的主要特性或規劃中的特性。在下節中,介紹了各發布系列的相關信息。 當前的生產版本系列是MySQL 5.0,據稱它能穩定地用于生產環境,如2005年10月發布的5.0.15版。以前的生產版本系列是MySQL 4.1,據稱它也能穩定地用于生產環境,如2004年10月發布的4.1.7版。“生產狀態”意味著未來的5.0和4.1開發僅限于修正缺陷。對于較早的MySQL 4.0和3.23系列,僅會對關鍵缺陷進行更正。 對于MySQL 5.0和5.1系列,相關的MySQL開發正在積極進行當中,并會為后者增加新的特性。 從1個版本系列升級到下一個版本系列之前,請參見[2.10節,“升級MySQL”](# "2.10.?Upgrading MySQL")的介紹。 在下面的表格中,歸納了要求最迫切的特性,以及實施了這些特性或計劃實施這些特性的版本: <table border="1" cellpadding="0" id="table2"><tr><td> <p><b>特性</b></p></td> <td> <p><strong><span>MySQ系列</span></strong></p></td> </tr><tr><td> <p><span>Foreign keys</span></p></td> <td> <p><span>3.23</span>(針對<span>InnoDB</span>存儲引擎)</p></td> </tr><tr><td> <p><span>Unions</span></p></td> <td> <p><span>4.0</span></p></td> </tr><tr><td> <p><span>Subqueries</span></p></td> <td> <p><span>4.1</span></p></td> </tr><tr><td> <p><span>R-trees</span></p></td> <td> <p><span>4.1</span>(針對<span>MyISAM</span><span> </span>存儲引擎)</p></td> </tr><tr><td> <p><span>Stored procedures</span></p></td> <td> <p><span>5.0</span></p></td> </tr><tr><td> <p><span>Views</span></p></td> <td> <p><span>5.0</span></p></td> </tr><tr><td> <p><span>Cursors</span></p></td> <td> <p><span>5.0</span></p></td> </tr><tr><td> <p><span>XA transactions</span></p></td> <td> <p><span>5.0</span></p></td> </tr><tr><td> <p><span>Foreign keys</span></p></td> <td> <p><span>5.1</span>(在<span>3.23</span>中實施,對于<span>InnoDB</span>)</p></td> </tr><tr><td> <p><span>Triggers</span></p></td> <td> <p><span>5.0</span>和<span>5.1</span></p></td> </tr><tr><td> <p><span>Full outer joins</span></p></td> <td> <p><span>5.1</span></p></td> </tr><tr><td> <p><span>Constraints</span></p></td> <td> <p><span>5.1</span>(在<span>3.23</span>中實施,對于<span>InnoDB</span>)</p></td> </tr><tr><td> <p><span>Partitioning</span></p></td> <td> <p><span>5.1</span></p></td> </tr><tr><td> <p><span>Pluggable Storage Engine API</span></p></td> <td> <p><span>5.1</span></p></td> </tr><tr><td> <p><span>Row-Based Replication</span></p></td> <td> <p><span>5.1</span></p></td> </tr></table> ### 1.6.1.?MySQL 5.1的新特性 關于我們打算在MySQL 5.1中增加的特性列表,請參見[1.6節,“MySQL發展大事記”](# "1.6.?MySQL Development Roadmap")。隨著5.1版的不斷發展,我們將在本節增加更多詳細信息。 另請參見[第18章:](#)[_分區_](# "Chapter?18.?Partitioning")。 ### 1.7.?MySQL信息源 [ 1.7.1. MySQL郵件列表](#)[ 1.7.2. IRC(在線聊天系統)上的MySQL社區支持](#)[ 1.7.3. MySQL論壇上的MySQL社區支持](#) ### 1.7.1.?MySQL郵件列表 [ 1.7.1.1. MySQL郵件列表](#)[ 1.7.1.2. 請教問題或通報缺陷](#)[ 1.7.1.3. 如何通報缺陷和問題](#)[ 1.7.1.4. 在郵件列表上回答問題的指南](#) 在本節中介紹了MySQL郵件列表,并給出了使用郵件列表的指南。訂購郵件列表后,將以電子郵件消息的形式收到所有已記錄的信息。你也可以將自己的問題和解答發送至郵件列表。 #### 1.7.1.1.?MySQL郵件列表 要想訂購本節所介紹的郵件列表或取消訂購,請訪問[http://lists.mysql.com/](http://lists.mysql.com/)。對于大多數郵件列表,可選擇能夠獲取單獨消息的正規列表版本,或選擇按天發布的包含大量消息的文摘版本。 不要將訂購信息或取消訂購的信息發送到郵件列表,原因在于,這類消息將自動分發給數千位其他用戶。 在你的所在地,可能有很多MySQL郵件列表的訂戶。如果是這樣,該地點可能會有本地郵件列表,這樣,從lists.mysql.com發出的消息將被傳播到本地列表。在這類情形下,請與你的系統管理員聯系,添加或刪除本地MySQL列表。 如果希望將郵件列表的信息傳送到郵件程序的郵箱中,請根據消息標題設置過濾器。可以使用列表ID: 或投遞至: 識別列表消息的標題。 MySQL列表包含: ·???????? 通告 該列表用于通告新的MySQL版本和相關程序。這是1種低容量列表,所有的MySQL用戶均應訂購它。 ·???????? mysql 這是關于一般MySQL討論的主要列表。請注意,對于某些主題來說,在更專門的列表中會得到更好地討論。如果將問題張貼到了錯誤的列表,可能不會得到回答。 ·???????? 缺陷 該列表面向那些希望隨時了解自上次MySQL版本發布以來已通報事宜的人員,或希望積極參與缺陷尋找和更正進程的人員。請參見[1.7.1.3節,“如何通報缺陷和問題”](# "1.7.1.3.?How to Report Bugs or Problems")。 ·???????? 內部構件 該列表面向那些與MySQL代碼打交道的人員。它也是討論MySQL開發并張貼補丁的論壇。 ·???????? mysqldoc 該列表面向那些與MySQL文檔打交道的人員: MySQL AB公司的人員,譯者,以及其他社區成員。 ·???????? 基準 該列表面向任何對性能事宜感興趣的人員。討論主要集中在數據庫性能方面(不限于MySQL),也包括更廣的類別,如內核性能、文件系統、磁盤系統等。 ·???????? packagers(包裝程序) 該列表主要討論包裝和分發MySQL方面的問題。這是供分發版維護人員交流MySQL打包事宜的論壇,為的是確保在所有支持的平臺和操作系統上,MySQL的外觀和感覺盡可能類似。 ·???????? java 該列表主要討論MySQL服務器和Java方面的問題。它主要討論JDBC驅動程序,包括MySQL Connector/J。 ·???????? win32 該列表涵蓋了在Microsoft操作系統環境下(如Windows 9x, Me, NT, 2000, XP和2003)與MySQL軟件有關的所有主題, ·???????? myodbc 該列表涵蓋了與使用ODBC連接到MySQL服務器有關的所有主題。 ·???????? gui-tools 該列表涵蓋了與MySQL GUI工具有關的所有主題,包括MySQL管理員以及MySQL控制中心圖形客戶端。 ·???????? cluster 該列表主要討論MySQL簇。 ·???????? dotnet 該列表主要討論MySQL服務器和.NET平臺方面的問題。它與MySQL Connector/Net提供人的關系最密切。 ·???????? plusplus 該列表涵蓋了使用C++ API進行MySQL編程的所有主題。 ·???????? perl 該列表涵蓋了與Perl對MySQL支持、以及DBD::mysql有關的所有主題。 如果無法從MySQL郵件列表或論壇獲得問題解答,一種選擇是購買MySQL AB的支持服務。這樣,你就能與MySQL開發人員直接聯系。 下面介紹了一些英語以外其他語言的MySQL郵件列表。這些郵件列表不是由MySQL AB運營的。 ·???????? <[mysql-france-subscribe@yahoogroups.com](#)> 法語郵件列表。 ·???????? <[list@tinc.net](#)> 朝鮮語郵件列表。發送電子郵件訂購mysql [ your@email.address](#)。 ·???????? <[mysql-de-request@lists.4t2.com](#)> 德語郵件列表。發送電子郵件訂購mysql-de [ your@email.address](#)。在[http://www.4t2.com/mysql/](http://www.4t2.com/mysql/)站點上,可找到關于該郵件列表的更多信息。 ·???????? <[mysql-br-request@listas.linkway.com.br](#)> 葡萄牙語郵件列表。發送電子郵件訂購mysql-br [ your@email.address](#)。 ·???????? <[mysql-alta@elistas.net](#)> 西班牙語郵件列表。發送電子郵件訂購mysql [ your@email.address](#)。 #### 1.7.1.2.?請教問題或通報缺陷 張貼缺陷報告或問題之前,請: ·???????? 首先搜索MySQL在線手冊,[http://dev.mysql.com/doc/](http://dev.mysql.com/doc/)。我們經常更新該手冊,以使該手冊保持最新,其中包含相應的解決方案和新發現的問題。變更史([http://dev.mysql.com/doc/mysql/en/News.html](http://dev.mysql.com/doc/mysql/en/News.html))可能更有用,原因在于,在較新的版本中可能包含對你所提出問題的解決方案。 ·???????? 搜索缺陷數據庫,[http://bugs.mysql.com/](http://bugs.mysql.com/),查找該缺陷是否已通報或更正。 ·???????? 搜索MySQL郵件列表檔案,[http://lists.mysql.com/](http://lists.mysql.com/)。 ·???????? 你也可以使用[http://www.mysql.com/search/](http://www.mysql.com/search/)來搜索MySQL AB網站上的所有網頁(包含手冊)。 如果無法在手冊或檔案中找到答案,請與本地MySQL專家協商。如果仍無法獲得解答,在與我們聯系之前,請按照介紹發送電子郵件至MySQL郵件列表,具體內容見下一節。 #### 1.7.1.3.?如何通報缺陷和問題 通報缺陷的正常地址是[http://bugs.mysql.com/](http://bugs.mysql.com/),它也是我方缺陷數據庫的地址。這是1個公共數據庫,任何人都能瀏覽它并進行相應的搜索。如果登錄到系統,可輸入新的報告。 編寫良好的缺陷報告需要耐心,但在第1時間正確地完成它不僅能節省我們的時間,也能節省你自己的時間。良好的缺陷報告應包含對缺陷的完整測試情況,以便我們能夠在下個版本中更正該缺陷。本節介紹的內容用于幫助你正確地編寫報告,從避免將你的時間浪費在對我們幫助不大或沒有幫助的事上, 我們鼓勵任何人使用**mysqlbug**腳本來生成缺陷報告(或通報問題)。**Mysqlbug**可在腳本目錄下找到(源碼分發版),也能在MySQL安裝目錄的bin子目錄下找到(二進制分發版)。如果不能使用**mysqlbug**(例如,如果你正在Windows平臺上運行),應包括本節所述的所有必要信息(更重要的是,應介紹操作系統和MySQL版本),這點十分重要。 通過自動確定下述信息,**mysqlbug**腳本能夠幫助你生成報告,但是,如果遺漏了某些重要事項,請將其包含在消息中。請認真閱讀本節,并確保在你的報告中包含了本節所述的所有信息。 在張貼問題前,最好使用MySQL服務器的最新生產版或開發版對問題進行測試。通過在所含的測試范例上使用“mysql test < script_file”,或運行缺陷報告中所含的Shell或Perl腳本,任何人均應能重復該缺陷。 對于在缺陷數據庫([http://bugs.mysql.com/](http://bugs.mysql.com/))中張貼的所有缺陷,均會被納入或記錄在下一個MySQL版本中。如果只需要少量更改就能更正問題,我們或許會給出更正該問題的補丁。 如果發現MySQL中存在敏感的安全缺陷,請發送電子郵件至[security@mysql.com](#)。 如果有1份可重復的缺陷報告,請將其提交到缺陷數據庫,[http://bugs.mysql.com/](#)。注意,即使在該情況下,也應首先運行**mysqlbug**腳本以找出與你的系統有關的信息,這是一個不錯的習慣。對于任何我們能再現的缺陷,在下一個MySQL版本中修正它的機會很大。 要想通報其他問題,請使用MySQL郵件列表。 請注意,我們可能會對包含過多信息的消息做出響應,但不太會對包含過少信息的消息做出回應。人們常會省略掉一些事實,因為他們認為自己知道了故障的原因,并想當然地認為這類細節無關緊要。良好的原則是: 如果你對陳述某事猶豫不定,請陳述之。如果我們要求你提供初始報告中缺少的信息,在報告中編寫多行信息源比等候回復要快,麻煩也更小。 在缺陷報告中,最常犯的錯誤包括:(a)未包含所使用MySQL的版本號,以及(b)未完全描述安裝了MySQL服務器的平臺(包括平臺類型,以及版本號)。這是高度相關的信息,如果沒有它,99%的缺陷報告無用。我們遇到這類問題,“為何它對我沒用”? 隨后,我們發現在該MySQL版本中,所請求的特性尚未實施,或在較新的MySQL版本中已更正了報告中描述的缺陷。有些時候,錯誤與平臺相關,在這類情況下,如果不知道操作系統和平臺的版本號,我們幾乎不可能更正任何問題。 如果你是從源碼編譯MySQL的,如果與問題有關,還應提供有關編譯器的信息。問題經常出在編譯器,但人們卻認為問題與MySQL有關。大多數編譯均處于不斷的開發過程中,并會變得越來越好。為了確定問題是否與你的編譯器有關,我們需要知道你所使用的編譯器。注意,所有的編譯問題均應被當作缺陷并予以通報。 在你的報告中包含良好的問題描述時,報告最有幫助。也就是說,應給出示例,指明導致問題的所有事項,并準確描述問題本身。最好的報告應包含完整的示例,這類示例應闡明再現缺陷或問題的方式。請參見[E.1.6節,“如果出現表崩潰,請生成測試案例”](# "E.1.6.?Making a Test Case If You Experience Table Corruption")。 如果程序產生了錯誤消息,也應將其包含在你的報告中,這點很重要。如果我們打算使用程序搜索檔案,最好是通報的錯誤消息與程序生成的錯誤消息準確匹配。(即使是字母的大小寫也應考慮在內)。永遠不要嘗試從記憶中再現錯誤消息,而是應將整個消息拷貝并粘貼到報告中。 如果遇到與Connector/ODBC (MyODBC)有關的問題,請生成1份跟蹤文件,并與報告一起發送給我們。請參見[26.1.1.9節,“如何通報MyODBC問題或缺陷”](# "26.1.1.9.?How to Report MyODBC Problems or Bugs")。 [請記住,很多閱讀你報告的人員會使用80列的顯示器。使用**mysql**命令行工具生成報告或示例時,如果輸出內容可能會超過這類顯示器的可用寬度,應使用“--vertical”選項(或“]()\G”語句終結符),例如EXPLAIN SELECT語句,請參見本節后面給出的示例。 請在你的報告中包含下述信息: ·???????? 你所使用的MySQL分發版的版本號(例如MySQL 4.0.12)。通過執行**mysqladmin version**,即可了解正在運行版本。**Mysqladmin**程序位于MySQL安裝目錄的bin子目錄下。 ·???????? 出現問題的機器的制造商和型號。 ·???????? 操作系統的名稱和版本。如果你使用的是Windows操作系統,通常能通過雙擊“我的電腦”圖標并點擊“幫助/關于Windows”菜單來了解操作系統的名稱和版本。對于大多數Unix操作系統,可通過執行命令uname –a獲取這類信息。 ·???????? 某些時候,內存容量(實際內存和虛擬內存)也有關系。如果懷疑它,也應包含這類數值。 ·???????? 如果你正在使用的是MySQL軟件的源碼分發版,還須提供所使用編譯器的名稱和版本。如果使用的是二進制分發版,需要提供其名稱。 ·???????? 如果在編譯過程中出現問題,應給出準確的錯誤消息,出錯文件中的不良代碼,以及該代碼附近的數行內容。 ·???????? 如果**mysqld**停止運行,還應通報導致**mysqld**崩潰的查詢。通常,能夠通過運行啟用了查詢日志功能的**mysqld**找出它,然后在**mysqld**崩潰后查找日志。請參見[E.1.5節,“使用日志文件找出mysqld中的錯誤原因****”](# "E.1.5.?Using Log Files to Find Cause of Errors in mysqld")。 ·???????? 如果數據庫表與問題有關,還應包含**mysqldump --no-data ****_ db_name_********_tbl_name_**的輸出。這是一種了解數據庫中表相關信息的簡單易行而且功能強大的方式。該信息能幫助我們建立與你所遇到的情況相匹配的場景。 ·???????? 對于與SELECT語句的速度有關的缺陷或問題,總應包含“EXPLAIN SELECT ...”的輸出,以及SELECT語句生成的行數(至少)。對于每個涉及的表,應包含SHOW CREATE TABLE _tbl_name_的輸出。你所提供的關于具體情況的信息越多,得到幫助的可能性就越大。 下面給出了一個良好缺陷報告的示例。應使用**mysqlbug**腳本張貼它。本例采用了**mysql**命令行工具。對于輸出內容可能會超過80列顯示器可用寬度的語句,應使用“\G”語句終結符。 mysql> SHOW VARIABLES; mysql> SHOW COLUMNS FROM ...\G ?????? <output from SHOW COLUMNS> mysql> EXPLAIN SELECT ...\G ?????? <output from EXPLAIN> mysql> FLUSH STATUS; mysql> SELECT ...; ?????? <A short version of the output from SELECT, ?????? including the time taken to run the query> mysql> SHOW STATUS; ?????? <output from SHOW STATUS> ·???????? 如果在運行**mysqld**時出現錯誤或問題,應提供導致異常的輸入腳本。該腳本應包含任何所需的源文件。越能再現具體情況的腳本越好。如果能夠創建可再現的測試范例,請將其張貼到[http://bugs.mysql.com/](http://bugs.mysql.com/),它將得到優先對待。 如果你不能提供腳本,至少應在你的郵件中包含**mysqladmin variables extended-status processlist**的輸出,以提供關于系統執行情況的某些信息。 ·???????? 如果不能生成包含數行內容的測試范例,或者如果測試表過大以至于無法發送到郵件列表(超過10行),應使用**mysqldump**轉儲表,并創建描述問題的README文件。 使用**tar**和**gzip**或**zip**創建文件的壓縮包檔案,并使用FTP將檔案傳輸到[ftp://ftp.mysql.com/pub/mysql/upload/](#)。然后將問題提交到我們的缺陷數據庫中,[http://bugs.mysql.com/](http://bugs.mysql.com/)。 ·???????? 如果你認為MySQL服務器生成了奇怪的查詢結果,不僅應包含結果,還應給出你對該結果的看法,以及支持觀點的基礎。 ·???????? 提供問題的示例時,最好使用實際情況下已有的變量名、表名等,而不是新名稱。問題可能與變量名或表名有關。或許這類情況很罕見,但安全總比道歉強。歸根結底,對你來說,提供關于實際情況的示例要簡單些,當然對我們也更好。如果你的數據不打算展示給其他人,請使用FTP將其傳輸到[ftp://ftp.mysql.com/pub/mysql/upload/](#)。如果信息是高度保密的,而且你甚至不打算向我們展示,請使用其他名稱給出示例,但請注意,這應是最后的選擇。 ·???????? 如果可能,應包含相關程序的所有選項。例如,應指明啟動**mysqld**服務器時使用的選項,以及用來運行MySQL客戶端程序的選項。對于程序(如**mysqld**和**mysql)選項以及configure腳本的選項,通常是解答問題的關鍵,關系十分密切。**包含它們總不是壞主意。如果使用了任何模塊,如Perl或PHP等,還應給出它們的版本。 ·???????? 如果你的問題與權限系統有關,請給出**mysqlaccess**的輸出,**mysqladmin reload**的輸出,以及進行連接時獲得的所有錯誤消息。測試權限時,首先應運行**mysqlaccess**。接下來,執行**mysqladmin reload version**,并與導致問題的程序相連。**mysqlaccess**可在MySQL安裝目錄的bin子目錄下找到。 ·???????? 如果你有關于某一缺陷的補丁,也請將它包含在內。但不要認為該補丁是我們所需的全部,如果未提供補丁所更正缺陷的必要信息(如測試范例),不要假定我們會使用它。我們可能會通過補丁發現問題,或者不能理解該補丁,如果是這樣,我們不會使用該補丁。 如果我們不能準確核實補丁的目的,將不會使用它。測試范例會對我們有所幫助。請指明該補丁能處理所有的問題。如果我們發現補丁不能工作的臨界情況(即使很罕見),它可能是無用的。 ·???????? 關于缺陷是什么、出現原因、以及缺陷導因的猜測通常是錯的。即使是MySQL團隊,在未使用調試器判定缺陷真實原因的情況下,也不能妄加猜測。 ·???????? 請在你的缺陷報告中指明,你已參閱了參考手冊并寄出了檔案,以便讓其他人知道你已作了自行解決問題的嘗試。 ·???????? 如果遇到解析錯誤,請仔細檢查語法。如果不能找出錯誤出現在那里,很可能是因為你使用的MySQL服務器版本不支持你使用的語法。如果你使用的是[http://dev.mysql.com/doc/](http://dev.mysql.com/doc/)上提供的當前版本和手冊
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看