mysql初學入門教程(MySQL基礎入門)
2023-04-15 14:58:12 1
目錄mysql發展歷史Mysql社區版和企業版的區別Mysql分支版本的發展MysqlMariaDBPercona ServerMysql 基礎架構術語介紹架構圖Mysql發展歷史MySQL(發音為"my ess cue el")是一種開放原始碼的關係型資料庫管理系統,因為是開放原始碼的,在下載後可以根據自己的需要進行修改。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。
MySQL的海豚標誌的名字叫「sakila」,它是由MySQL AB的創始人從用戶在「海豚命名」的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲史瓦帝尼的開源軟體開發者Ambrose Twebaze提供。根據Ambrose所說,Sakila來自一種叫SiSwati的史瓦帝尼方言,女性化名稱Sakila源自SiSwati。Sakila也是坦尚尼亞、Arusha地區的一個鎮的鎮名,靠近Ambrose的母國烏幹達。 MySQL名稱的起源不明。一直以來,我們的基本目錄以及大量庫和工具均採用了前綴「my」。不過,共同創辦人Monty Widenius的女兒名字也叫「My」。時至今日,MySQL名稱的起源仍是一個迷,即使對我們也一樣。1、MySQL的歷史可以追溯到1979年,一個名為Monty Widenius的程式設計師在為TcX的小公司打工,並且用BASIC設計了一個報表工具,使其可以在4MHz主頻和16KB內存的計算機上運行。當時,這只是一個很底層的且僅面向報表的存儲引擎,名叫Unireg。
2、1990年,TcX公司的客戶中開始有人要求為他的API提供SQL支持。Monty直接藉助於mSQL的代碼,將它集成到自己的存儲引擎中。令人失望的是,效果並不太令人滿意,決心自己重寫一個SQL支持。
3、 1996年,MySQL 1.0發布,它只面向一小撥人,相當於內部發布。到了1996年10月,MySQL 3.11.1發布(MySQL沒有2.x版本),最開始只提供Solaris下的二進位版本。一個月後,Linux版本出現了。在接下來的兩年裡,MySQL被依次移植到各個平臺。
4、1999~2000年,MySQL AB公司在瑞典成立。Monty僱了幾個人與Sleepycat合作,開發出了Berkeley DB引擎, 由於BDB支持事務處理,因此MySQL從此開始支持事務處理了。
5、2000,MySQL不僅公布自己的原始碼,並採用GPL(GNU General Public License)許可協議,正式進入開源世界。同年4月,MySQL對舊的存儲引擎ISAM進行了整理,將其命名為MyISAM。
6、2001年,集成Heikki Tuuri的存儲引擎InnoDB,這個引擎不僅能持事務處理,並且支持行級鎖。後來該引擎被證明是最為成功的MySQL事務存儲引擎。MySQL與InnoDB的正式結合版本是4.0
7、2003年12月,MySQL 5.0版本發布,提供了視圖、存儲過程等功能。
8、2008年1月,MySQL AB公司被Sun公司以10億美金收購,MySQL資料庫進入Sun時代。在Sun時代,Sun公司對其進行了大量的推廣、優化、Bug修復等工作。
9、2008年11月,MySQL 5.1發布,它提供了分區、事件管理,以及基於行的複製和基於磁碟的NDB集群系統,同時修復了大量的Bug。
10、2009年4月,Oracle公司以74億美元收購Sun公司,自此MySQL資料庫進入Oracle時代,而其第三方的存儲引擎InnoDB早在2005年就被Oracle公司收購。
11、2010年12月,MySQL 5.5發布,其主要新特性包括半同步的複製及對SIGNAL/RESIGNAL的異常處理功能的支持,最重要的是InnoDB存儲引擎終於變為當前MySQL的默認存儲引擎。MySQL 5.5不是時隔兩年後的一次簡單的版本更新,而是加強了MySQL各個方面在企業級的特性。Oracle公司同時也承諾MySQL 5.5和未來版本仍是採用GPL授權的開源產品。
MySQL由於它的開源性被廣泛傳播,也讓更多的人了解到這個資料庫。它的歷史也富有傳奇性。在這裡僅是作為一個故事講解了MySQL的發展史,在網上很多版本也會有不同。伴隨著更多的技術開發人員加入到MySQL的開發中,不斷完善,發展會越來越好。
Mysql社區版和企業版的區別● MySQL Community Server:Community是社區版本,開源免費,但不提供官方技術支持;
● MySQL Enterprise Edition:Enterprise企業版本,需付費,可以試用30天,提供官網技術支持;
企業版又分為4個商用版本:
MySQL企業版MySQL標準本MySQL Cluster 運營商級版本MySQL Classic 版本Mysql分支版本的發展由於Oracle收購了MySQL,考慮到可能閉源或發展緩慢,所以開源市場發展出了其他的Mysql分支版本 目前市場最主流的三大Mysql版本:Mysql;MariaDB;percona
Mysql官方,被Oracle公司收購之後,產品一直比較穩定,商用的資料庫 (穩定)
MariaDBMariaDb起源:
Mysql原作者,MariaDB更偏向於功能的完善-(嘗新),MySQL之父Widenius先生離開了Sun之後,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,於是決定另開分支,這個分支的名字叫做MariaDB。
MariaDB跟MySQL在絕大多數方面是兼容的,對於開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本發布速度已經超過了Oracle官方的MySQL版本。
在Oracle控制下的MySQL開發,有兩個主要問題:1. MySQL核心開發團隊是封閉的,完全沒有Oracle之外的成員參加。很多高手即使有心做貢獻,也沒辦法做到。2. MySQL新版本的發布速度,在Oracle收購Sun之後大為減緩。Widenius有一個ppt,用數據比較了收購之前和之後新版本的發布速度。有很多bugfix和新的feature,都沒有及時加入到發布版本之中。
以上這兩個問題,導致了各個大公司,都開發了自己定製的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴 淘寶網等等。
MySQL是開源社區的資產,任何個人/組織都無權據為己有。為了依靠廣大MySQL社區的力量來更快速的發展MySQL,另外開分支是必須的。
Percona ServerPercona起源: Mysql原運維部總監,Percona公司更偏向於開發運維工具--性能調優,MySQL AB的創始人之一Monty Widenius和原來的MySQL AB工程師,現在的percona公司CEO聯合組成一個新的開源資料庫聯盟,命名為:Alliance。這算是Oracle收購Sun後的一個反擊,讓大家看到了MySQL衍生品的後續發展前景
Mysql 基礎架構一個系統可以有多個實例(實例等於cpu和內存的集合,也就是一個個等於一個Mysql)一個實例可以有多個資料庫一個資料庫可以有張表一個表有很多鍵值(數據)File Syttem: Files & Logs:
參數文件:mysql實例啟動的時候在哪裡可以知道資料庫文件,並且制定某些初始化參數,這些參數定義了,某種內存結果的大小等設置,還介紹了參數類型以及定義作用域,mysql實例啟動時,會縣杜曲配置參數文件的my.cnf。日誌文件:記錄mysql對某種條件作出響應時候寫入的文件,記錄了影響mysql資料庫的各種類型活動,常用的日誌文件有錯誤日誌、二進位日誌、慢查詢日誌、全查詢日誌、redo日誌、undo日誌。錯誤日誌:錯誤日誌對mysql的啟動,運行、關閉過程進行了記錄,問題分析必看二進位日誌:記錄了對資料庫進行變更的操作,但是不包括select操作以及show操作,主要用於恢復(recovery)、複製(replicatiuon)慢查詢日誌:記錄運行比較慢的sql語句信息,給sql語句的優化帶來很好的幫助。全查詢日誌:記錄mysql所有的請求,資料庫審計 問題排查跟蹤性,損失3%-5%的性能rodo日誌:數據看都是日誌先行,先寫日誌,在寫數據文件,保證恢復與完整性。undo日誌:裡面存儲了與redo相反的數據更新操作,如果rollback的話,就把undo段裡面數據回寫到數據文件裡面,這個對innodb存儲引擎非常重要,因為他們記錄了對於innodb存儲引擎的事務日誌。redo與undo他們並不是各自獨立沒有關係,他們是有關聯的,交替合作來保證數據的一致性和安全性,socker文件:當用linux和mysql命令行窗口登錄的時候需要的文件,linux系統下本地連接mysql可以採用linux域套接字socket方式,需要一個套接字socket發文件,可以有參數socket控制,一般默認在/tmp目錄下pid文件:mysql實例的進程文件,當mysql實例啟動的時候,會將自己的進程id寫入一個文件中,該文件即為pid文件,有參數pid_file控制,默認路徑位於資料庫目錄下mysql表結構文件:存放mysql表結構定義文件,如:.frm,.ibd存儲引擎文件:記錄存儲引擎信息的文件,innodb存儲引擎在存儲設計上模仿了Oracle,該文件就是默認的表空間文件,可以用多個文件組成一個表空間。,