新四季網

mysql初學入門教程(MySQL基礎入門)

2023-04-15 14:58:12

目錄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公司收購之後,產品一直比較穩定,商用的資料庫 (穩定)

MariaDB

MariaDb起源:

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 Server

Percona起源: Mysql原運維部總監,Percona公司更偏向於開發運維工具--性能調優,MySQL AB的創始人之一Monty Widenius和原來的MySQL AB工程師,現在的percona公司CEO聯合組成一個新的開源資料庫聯盟,命名為:Alliance。這算是Oracle收購Sun後的一個反擊,讓大家看到了MySQL衍生品的後續發展前景

Mysql 基礎架構一個系統可以有多個實例(實例等於cpu和內存的集合,也就是一個個等於一個Mysql)一個實例可以有多個資料庫一個資料庫可以有張表一個表有很多鍵值(數據)

術語介紹資料庫: 資料庫是一些關聯表的集合。數據表: 表是數據的矩陣。在一個資料庫中的表看起來像一個簡單的電子表格。列: 一列(數據元素) 包含了相同類型的數據, 例如郵政編碼的數據。行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。冗餘:存儲兩倍數據,冗餘降低了性能,但提高了數據的安全性。主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢數據。外鍵:外鍵用於關聯兩個表。複合鍵:複合鍵(組合鍵)將多個列作為一個索引鍵,一般用於複合索引。索引:使用索引可快速訪問資料庫表中的特定信息。索引是對資料庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證數據的一致性。

架構圖

Connectors:指的是不同開發語言中與SQL的交互Management Serveices & utilities:系統管理和控制工具Connection Pool:連接池,管理緩存用戶連接,線程處理需求SQL Interface:SQL接口,接受用戶的SQL命令,並且返回用戶查詢需要的結果,比如select from就是調用SQL interfaceParser:解釋器,SQL命令傳遞到解釋器的時候會被解釋器驗證和解析。解析器是有Lex和YACC實現的,是一個很長的腳本。主要功能:a.將sql語句分解成數據結構,並將這個結構傳遞到後續步驟,以後sql語句的傳遞和處理就是基於這個結構。b.如果在分解構成中遇到錯誤,那麼就說明這個sql語句是不合理的Optimozer:查詢優化器sql語句在查詢之前會使用查詢優化器對查詢進行優化,他使用的是"選取-投影-聯接「 策略進行查詢」caches&Buffers:查詢緩存,如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數據Pluggable Storage Engines:存儲引擎 存儲引擎是MySQL用什麼表類型,也是MySQL最具有特色的一個地方。MySQL的存儲引擎是插件式的,他根據mysql AB公司提供的文件訪問層的一個抽象接口來定製一種文件訪問機制(這個訪問機制就叫做存儲引擎)

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,該文件就是默認的表空間文件,可以用多個文件組成一個表空間。,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了