MySQL 是全球最受歡迎的開放原始碼關聯資料庫之一。其高人氣歸功於在電子商務網站、社群媒體和 Drupal、Joomla、Magento 及 WordPress 等應用程式等領域中獲得廣泛使用。而它也是受到廣泛使用的 Linux-Apache-MySQL-PHP/Perl/Python (LAMP) 網頁應用程式堆疊中的關鍵部分,該堆疊支援了許多熱門的應用程式、網站和服務。DB-Engines 將其排名為全球第二熱門的資料庫。
瞭解 Google Cloud 的代管關聯式資料庫 MySQL 適用的 Cloud SQL 如何協助您降低營運成本並提升效率。
MySQL 是開放原始碼的關聯資料庫管理系統。與其他關聯資料庫一樣,MySQL 會將資料儲存在由資料列和資料欄組成的資料表中。使用者可以使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。由於 MySQL 是開放原始碼,它包含許多在和使用者密切合作下所開發出的多項功能,至今已超過 25 年。
MySQL 是開放原始碼服務,因此可以在 GNU 通用公眾授權條款之下免費使用。這也意味著任何人都能自行修改軟體的原始碼,再加以使用。這導致 MySQL 分歧為其他的資料庫變化版本,例如 MariaDB 和 Percona Server for MySQL。另外,MySQL 也提供其他商業用途授權。
MySQL 屬於被稱做關聯資料庫管理系統 (RDBMS) 的資料庫類別。關聯資料庫是一組資訊,以預先定義的關係彙整資料,可將資料儲存在一或多個資料表 (或「關係」) 的資料欄或資料列中,以便輕鬆查看及瞭解各種不同資料結構之間有何關聯。「關係」是不同資料表之間的邏輯連結,根據這些資料表之間的互動來建立。
商用程式設計語言 (SQL) 以 Edgar F. Codd 的研究中所述的關聯模型為基礎,而 MySQL 則是做為 SQL 的擴充功能而建立。由 David Axmark、Allan Larsson 和 Michael Widenius 創立的瑞典公司 MySQL AB,於 1995 年開發及發布 MySQL。「MySQL」這個名稱是由 Michael Wildenius 女兒的名字「My」加上代表「結構查詢語言」的「SQL」組合而成。Sun Microsystems 於 2008 年收購 MySQL AB。Oracle Corporation 自從在 2010 年收購 Sun Microsystems 之後,目前仍持有 MySQL 的擁有權。
MySQL 最初是以 C 和 C++ 程式設計語言開發,由於其在許多開放原始碼與專屬作業系統上的可用性,因此過去幾年來有許多版本都很受歡迎。該資料庫的最新版本 MySQL 8.0 版已於 2018 年推出。
多年來基於許多原因,MySQL 專案產生許多分支,而其中某些分支已消失。在其餘的分支專案中,最熱門的專案是 MariaDB 和 Percona Server for MySQL。MariaDB 是 MySQL 原始創辦人所建立的分支,以確保在由 Oracle 收購後出現的商業化疑慮中,MySQL 仍保持為開放原始碼。Percona Server for MySQL 是 MySQL 的另一個開放原始碼發布版本,旨在與 MySQL 保持密切的相容性。進一步瞭解 MySQL 版本和 MySQL 的完整生態系統。
您可透過圖形使用者介面 (GUI) 或指令列介面工具存取 MySQL。
圖形使用者介面 (GUI)
GUI 提供整合式環境,由按鈕和互動小工具所組成,可為查詢與應用程式的開發提供視覺化體驗,而非在指令列介面中使用文字指令。許多 MySQL 的 GUI 都是由 MySQL 開放原始碼專案和第三方整合商所開發。MySQL Workbench 是較為熱門的工具之一,該工具也是開放原始碼且是由 MySQL AB 開發。其他知名的 GUI 還包括 phpMyAdmin,這是開發網頁應用程式的熱門管理工具,以及 HeidiSQL,這是個開放原始碼管理工具,可用於管理 MySQL 以外的其他資料庫。
指令列
您也可以透過指令列工具存取 MySQL。這些工具也稱為 MySQL 公用程式,隨附於 MySQL 發行套件,且可透過 MySQL 殼層或其他指令列介面工具 (例如 Percona Toolkit) 的文字指令叫用。
使用者可以使用開放原始碼程式碼,在自有的實體機器上手動部署 MySQL,也可以下載其中一個封裝發行套件來部署 MySQL。MySQL 最常安裝在具有垂直資源調度的單一執行個體或機器上,是提升效能的主要方法。不過,您可以使用一個主要節點和多個次要節點在備用配置中設定 MySQL,次要節點可在執行個體故障時升級為主要執行個體。
另一個越來越熱門的 MySQL 託管方法是透過雲端服務供應商 (CSP)。有幾種方法可在雲端服務供應商的環境中部署 MySQL。一種是直接在虛擬機器上安裝 MySQL,並自行管理。另一種則是運用雲端服務供應商的代管服務來處理許多的 MySQL 管理作業層面,讓 MySQL 的管理工作變得輕鬆許多。Google Cloud 提供 Cloud SQL 形式的代管服務。MySQL 適用的 Cloud SQL 是一項全代管資料庫服務,可協助您在 Google Cloud 上設定、維護及管理 MySQL 關聯資料庫;並提供有關安全性、高可用性和觀測能力的加值服務,以減少資料庫管理員的負擔,有助於組織創新。參閱設定 MySQL 適用的 Cloud SQL 執行個體的最佳做法一文,瞭解如何設定 MySQL 的 Cloud SQL 執行個體。使用者可運用多項實用工具和選項,輕鬆簡單地從地端部署 MySQL 或從雲端服務供應商的其他資料庫遷移至 MySQL 適用的 Cloud SQL。
如要瞭解 MySQL 適用的 Cloud SQL 全代管服務和自行管理 MySQL 的優點和差異,請參閱 MySQL 託管選項一文。
MySQL 速度快、可靠、可擴充且易於使用。MySQL 可以順暢地在桌上型電腦或筆記型電腦上執行,搭配其他應用程式、網路伺服器等,完全不需要或幾乎不需要費心注意。如果您將整個機器用於 MySQL,就可調整設定以利用所有可用的記憶體、CPU 效能和 I/O 容量。MySQL 也可以向上擴充至多部機器,並透過網路相互連結。
使用 MySQL 來管理和儲存資料還有許多其他優勢,包括:
高可用性
MySQL 中的高可用性 (HA) 是指資料庫引擎能夠長時間運作,而不發生故障。MySQL 中的高可用性設定可能相當複雜,且取決於每位使用者的特定可用性需求,以及他們部署 MySQL 的方式。如要在 MySQL 中設定高可用性,使用者需要費心處理資料複製、失敗偵測、容錯移轉和容錯回復機制,以及在容錯移轉後將資料庫流量重新導向至次要執行個體等問題。MySQL 適用的 Cloud SQL 讓高可用性程序變得簡單又輕鬆。進一步瞭解在 Google Compute Engine 上具高可用性的 MySQL,或 MySQL 適用的 Cloud SQL 提供的全代管、高可用性體驗。
安全性
MySQL 安全性考量涵蓋眾多因素。有些重要因素與資料保護有關,例如透過資料備援機制和密碼、權限、存取控管,以及網路安全防護等一般安全性程序來防止資料損毀。進一步瞭解 MySQL 適用的 Cloud SQL (Google Cloud 的全代管 MySQL 產品) 安全防護技術。
備份與還原
MySQL 支援透過多種機制 (包括第三方工具) 備份和復原資料。您可以透過 mysqldump 公用程式、使用二進位檔記錄進行增量備份,以及使用複製功能等方式,來備份及還原 MySQL。MySQL 適用的 Cloud SQL 提供自有的備份與還原功能,可讓您自動或按需求執行備份。
彈性
您不需要變更整個資料庫結構或影響現有的應用程式,就能輕鬆新增、更新或刪除資料表和關係,也可以視需要對資料進行其他變更。
易用性
使用 SQL 輕鬆執行複雜的查詢,讓新手使用者能直覺地與資料庫互動。
管理任何資料庫時,效能最佳化作業是相當重要的一環。MySQL 提供許多功能和調整選項,可讓您輕鬆開發高效能的應用程式。如要進一步瞭解這類功能,請參閱 MySQL 效能最佳化提示一文。而另一篇文章查詢調整也提供具體的提高效能最佳做法。
MySQL 支援 ACID (完整性、一致性、獨立性和耐用性) 特性,能確保資料的有效性,不怕錯誤、失敗或其他潛在危害。
基於其多元性,MySQL 可用於許多不同的用途。歡迎進一步探索下列用途。
MySQL 是今日許多使用開放原始碼 LAMP 堆疊建構的網路應用程式的重要部分。LAMP 代表使用 Linux 做為作業系統、Apache 做為網路伺服器、MySQL 做為資料庫,以及 PHP、Python 或 PERL 做為程式設計語言。LAMP 可協助開發人員建構動態網頁應用程式,而這類應用程式需要從 MySQL 等資料庫擷取最新資訊。這類資訊包括使用者帳戶、使用者詳細資料、產品名稱、客戶記錄和銷售等等。使用者可以透過 SQL 輕鬆存取及操控儲存在資料庫中的資訊。如要瞭解詳情,請參閱 LAMP 和如何使用這項工具建構網頁應用程式。
現在,許多應用程式都需要使用資料庫 (例如 MySQL),才能快速處理來自廣大人群的大量資料庫交易。MySQL 等 OLTP 資料庫是許多日常網路交易的基礎,包括金融交易、旅遊行程預訂及保存記錄等。為了支援線上交易處理用途,MySQL 遵循 ACID 原則,支援 XML 與 JSON、預存程序、分群法及分區。此外,您也可以選擇多種儲存引擎,讓您能靈活整合多種資料表類型的資料。
對需要管理使用者、消費者資訊、財務資料及分析趨勢以防止詐欺活動的電子商務應用程式來說,MySQL 是個很受歡迎的資料庫。像 MySQL 這樣的關聯式資料庫可用來將資訊整理成資料表 (產品、客戶、訂單),還能視需要新增其他資料表。部分全球大型機構 (如 Airbnb、Uber、Netflix、Booking.com、Spotify 和 eBay) 都將 MySQL 用於自家的電子商務應用程式。MySQL 也可部署在混合部署作業中,以充分支援電子商務用途。MySQL 可做為結構化資料的關聯式資料庫,以及產品詳細資料或行銷資訊等非結構化資料的非關聯式資料庫。
軟體式服務 (SaaS) 應用程式通常為 24 小時全年無休的作業,因此需要降低停機時間、提升安全性,並因應需求變化而調度資源。易於部署、管理和擴充的 MySQL 已成為相當受歡迎的資料庫選項,可讓您輕鬆建構軟體式服務 (SaaS) 應用程式。由於它是開放原始碼的,因此開發人員可以快速開始使用服務,不必支付專屬軟體的授權費。MySQL 全球社群相當活躍,且為提供額外功能的外掛程式做出了貢獻。
MySQL 是 WordPress 和 Drupal 等內容管理系統 (CMS) 的熱門資料庫選擇。CMS 會將文章、網頁、圖片、評論、類別、標記、自訂欄位、使用者及其他設定儲存在 MySQL 資料庫。MySQL 可以同時處理大型資料表和多項查詢,能因應 CMS 每天數千甚至數百萬個帳戶的需求。隨著目標對象成長,MySQL 也能垂直或水平調度資源,滿足您的業務需要。
社群媒體應用程式的一大關鍵需求,在於連結使用者、群組和留言等各個資料儲存庫。這類用途會影響社群媒體應用程式在選擇關聯資料庫時的偏好,而 MySQL 便是最佳選擇。其中知名的例子包括 Twitter、Pinterest 和 LinkedIn。
瞭解 MySQL 適用的 Cloud SQL 如何協助您推動革新。 查看說明文件