最近一直都在搞新員工的培訓材料,MySQL的培訓PPT我居然寫了100多頁,我都佩服我自己的毅力了。不如現在把這些總結一下,慢慢寫到博客里,供入門者參考。 一 關係型資料庫 關係型資料庫的理論提出於上世紀七十年代,由IBM的研究員E.F.Codd的論文提出。 關係型資料庫的理論基礎可以參考王珊和薩師
最近一直都在搞新員工的培訓材料,MySQL的培訓PPT我居然寫了100多頁,我都佩服我自己的毅力了。不如現在把這些總結一下,慢慢寫到博客里,供入門者參考。
一 關係型資料庫
關係型資料庫的理論提出於上世紀七十年代,由IBM的研究員E.F.Codd的論文提出。
關係型資料庫的理論基礎可以參考王珊和薩師煊編著的經典教材《資料庫系統概論》。我就不在這裡寫了,這些理論性太強,作為快速入門的教程也不應該說這些,但是這些理論就像是武功里的易筋經一樣,練了以後什麼功夫都學得快。
二 資料庫的基本概念
以前玩兒Oracle的時候加了一個群,發現很多人寫了好久的PL/SQL,但是還是搞不明白什麼叫資料庫,什麼叫做實例。我覺得,雖然不知道這些還是可以寫PL/SQL,但是如果想成為一個DBA,基本概念還是一定要清楚的,就像是練功還是要先扎馬步一樣,下盤不穩總是容易倒下嘛。
資料庫(database):指的是文件系統上的一組文件,在innoDB中表現為尾碼為idb的文件。
實例(instance):指的是操作系統上的一組進程/線程和記憶體的集合。如果在MySQL伺服器上執行ps -ef | grep mysql,就能看見MySQL的進程了。
簡單地說,資料庫指的是文件,實例指的是進程/線程和記憶體。
平時我們說的資料庫,很多的時候指的是關係型資料庫管理系統(RDBMS),這些概念在嚴謹的文檔中是要嚴格區分的,但是在平時的交流中,基本上大家約定俗成的說法是沒有問題的。
至於資料庫的其他一些概念:表,行,列,視圖和索引等等,這些以後慢慢講吧。
三 MySQL資料庫概述
MySQL最開始是創始人Monty覺得別人的資料庫不好使,自己寫出來服務自己的(Linux是當年Linus覺得Minix只能用在教學,為了更好地學操作系統寫出來的),不得不說這些人牛。
後來,他成立了MySQL AB公司,開發用於商用的MySQL。之後公司被大名鼎鼎的Sun收購,在Sun時期,MySQL推出了5.1版本,這個版本我用了好久,堪稱難用,尤其是和後來的5.5比起來,簡直是太難用了。
2009年,MySQL隨著Sun一起被Oracle收購,隨後Oracle推出了5.5版本,我個人覺得這個版本真的是里程碑版本了,當年我們從5.1升級到5.5的時候,性能好的真的是讓我都快流淚了,尤其是比5.1完善的多的分區表,簡直是當年我做數據倉庫的福音。
後來,我們迎來了5.6和5.7版本, 這些版本大幅提高了併發能力和複製的性能,尤其是5.7的並行複製功能,理論上解決了一直存在的複製延遲問題。我確實感覺到,Oracle公司在資料庫領域的領先確實不是其他公司可以比擬的。
當然,開源軟體,尤其是好的開源軟體總是有分支的。MySQL最大的分支就是Percona Server和MariaDB了。Percona Server專註於性能的提升,其推出的XtraDB引擎就是innoDB的加強版;MariaDB則會引進更多的新特性,尤其是MariaDB率先推出的並行複製功能,著實讓官方MySQL用戶眼紅。
四 Linux還是Windows?
我現在就是用Windows來寫這篇博文的,但是我還是覺得Linux在伺服器領域遠遠好於Windows。
其實我最近和很多網友交流過,發現很多人學習MySQL的時候還是首先會選擇Windows,在我推薦使用Linux時很多人都會抱怨Linux的GUI太差了,安裝軟體也非常複雜,實在是不想用。實際上從入門學習的角度上說,用Windows也是可以的,不過很多DBA每天不止是寫寫SQL,還要搞很多操作系統和網路上的事情,所以還是直接用Linux比較好。我最開始學習Linux的時候也天天罵為什麼不能把操作系統做的好用一點,不過後來熟悉了覺得挺好用的,有時候寫個Shell還是挺高效的。
學習Linux可以從Ubuntu入手,這個版本的GUI做的很不錯,現在很多公司的系統採用了RHEL或者CentOS,學習的時候也可以看看,和Ubuntu大同小異。推薦一本書:《鳥哥的Linux私房菜》,只看第一卷就可以了,基本上學會了就可以把Linux作為日常工作系統了。
我以前看到過一些資料,說是MySQL在Linux上的性能更好,Windows的版本也是後來某個版本才開始優化了,不知道這個說法是否成立,我姑且信之。不過有個點可以作為參考,就是Percona公司的Percona Server就根本沒有Windows版本。
所以最好還是從開始學習就用Linux吧,畢竟一個DBA得雜學操作系統和網路。
--------------------------------------------------------------------------------
今天寫了一些基本概念和MySQL的歷史,這些我們也是需要理解和知道的,對一個DBA來說這些知識只有好處沒有壞處。今天躺著寫的,沒有滑鼠不是很方便,所以寫的比較簡略。