當前位置:編程學習大全網 - 網絡軟體 - MySQL是什麽東西

MySQL是什麽東西

MySQL是壹種開放源代碼的關系型數據庫管理系統(RDBMS),使用最常用的數據庫管理語言--結構化查詢語言(SQL)進行數據庫管理。

MySQL是開放源代碼的,因此任何人都可以在General Public License的許可下下載並根據個性化的需要對其進行修改。

MySQL因為其速度、可靠性和適應性而備受關註。大多數人都認為在不需要事務化處理的情況下,MySQL是管理內容最好的選擇。

推薦教程:mysql入門視頻教程

MySQL簡介

MySQL是壹種開放源代碼的關系型數據庫管理系統(RDBMS),MySQL數據庫系統使用最常用的數據庫管理語言--結構化查詢語言(SQL)進行數據庫管理。

由於MySQL是開放源代碼的,因此任何人都可以在General Public License的許可下下載並根據個性化的需要對其進行修改。MySQL因為其速度、可靠性和適應性而備受關註。大多數人都認為在不需要事務化處理的情況下,MySQL是管理內容最好的選擇。

MySQL這個名字,起源不是很明確。壹個比較有影響的說法是,基本指南和大量的庫和工具帶有前綴“my”已經有10年以上,而且不管怎樣,MySQL AB創始人之壹的Monty Widenius的女兒也叫My。這兩個到底是哪壹個給出了MySQL這個名字至今依然是個迷,包括開發者在內也不知道。

MySQL的海豚標誌的名字叫“sakila”,它是由MySQL AB的創始人從用戶在“海豚命名”的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲斯威士蘭的開源軟件開發者Ambrose Twebaze提供。根據Ambrose所說,Sakila來自壹種叫SiSwati的斯威士蘭方言,也是在Ambrose的家鄉烏幹達附近的坦桑尼亞的Arusha的壹個小鎮的名字。

MySQL,雖然功能未必很強大,但因為它的開源、廣泛傳播,導致很多人都了解到這個數據庫。它的歷史也富有傳奇性。

數據庫優化

選擇InnoDB作為存儲引擎

大型產品的數據庫對於可靠性和並發性的要求較高,InnoDB作為默認的MySQL存儲引擎,相對於MyISAM來說是個更佳的選擇。

優化數據庫結構

組織數據庫的schema、表和字段以降低I/O的開銷,將相關項保存在壹起,並提前規劃,以便隨著數據量的增長,性能可以保持較高的水平。

設計數據表應盡量使其占用的空間最小化,表的主鍵應盡可能短。·對於InnoDB表,主鍵所在的列在每個輔助索引條目中都是可復制的,因此如果有很多輔助索引,那麽壹個短的主鍵可以節省大量空間。

僅創建妳需要改進查詢性能的索引。索引有助於檢索,但是會增加插入和更新操作的執行時間。

InnoDB的ChangeBuffering特性

InnoDB提供了changebuffering的配置,可減少維護輔助索引所需的磁盤I/O。大規模的數據庫可能會遇到大量的表操作和大量的I/O,以保證輔助索引保持最新。當相關頁面不在緩沖池裏面時,InnoDB的changebuffer將會更改緩存到輔助索引條目,從而避免因不能立即從磁盤讀取頁面而導致耗時的I/O操作。當頁面被加載到緩沖池時,緩沖的更改將被合並,更新的頁面之後會刷新到磁盤。這樣做可提高性能,適用於MySQL5.5及更高版本。

InnoDB頁面壓縮

InnoDB支持對表進行頁面級的壓縮。當寫入數據頁的時候,會有特定的壓縮算法對其進行壓縮。壓縮後的數據會寫入磁盤,其打孔機制會釋放頁面末尾的空塊。如果壓縮失敗,數據會按原樣寫入。表和索引都會被壓縮,因為索引通常是數據庫總大小中占比很大的壹部分,壓縮可以顯著節約內存,I/O或處理時間,這樣就達到了提高性能和伸縮性的目的。它還可以減少內存和磁盤之間傳輸的數據量。MySQL5.1及更高版本支持該功能。

註意,頁面壓縮並不能支持***享表空間中的表。***享表空間包括系統表空間、臨時表空間和常規表空間。

使用批量數據導入

在主鍵上使用已排序的數據源進行批量數據的導入可加快數據插入的過程。否則,可能需要在其他行之間插入行以維護排序,這會導致磁盤I/O變高,進而影響性能,增加頁的拆分。關閉自動提交的模式也是有好處的,因為它會為每個插入執行日誌刷新到磁盤。在批量插入期間臨時轉移唯壹鍵和外鍵檢查也可顯著降低磁盤I/O。對於新建的表,最好的做法是在批量導入後創建外鍵/唯壹鍵約束。

壹旦妳的數據達到穩定的大小,或者增長的表增加了幾十或幾百兆字節,就應該考慮使用OPTIMIZETABLE語句重新組織表並壓縮浪費的空間。對重新組織後的表進行全表掃描所需要的I/O會更少。

優化InnoDB磁盤I/O

增加InnoDB緩沖池大小可以讓查詢從緩沖池訪問而不是通過磁盤I/O訪問。通過調整系統變量innodb_flush_method來調整清除緩沖的指標使其達到最佳水平。

MySQL的內存分配

在為MySQL分配足夠的內存之前,請考慮不同領域對MySQL的內存需求。要考慮的關鍵領域是:並發連接——對於大量並發連接,排序和臨時表將需要大量內存。在撰寫本文時,對於處理3000+並發連接的數據庫,16GB到32GB的RAM是足夠的。

內存碎片可以消耗大約10%或更多的內存。像innodb_buffer_pool_size、key_buffer_size、query_cache_size等緩存和緩沖區要消耗大約80%的已分配內存。

日常維護

定期檢查慢的查詢日誌並優化查詢機制以有效使用緩存來減少磁盤I/O。優化它們,以掃描最少的行數,而不是進行全表掃描。

其他可以幫助DBA檢查和分析性能的日誌包括:錯誤日誌、常規查詢日誌、二進制日誌、DDL日誌(元數據日誌)。

定期刷新緩存和緩沖區以降低碎片化。使用OPTIMIZETABLE語句重新組織表並壓縮任何可能被浪費的空間。 [1]

  • 上一篇:怎麽折心形愛心
  • 下一篇:寫作助手
  • copyright 2024編程學習大全網