多看書。少用工具,多在命令窗口下管理數(shù)據(jù)庫,自然而然就會熟悉的。
成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊及專業(yè)的網(wǎng)站設(shè)計師團(tuán)隊。
mysql功能并不像Oracle那樣復(fù)雜。官方的幫助文檔永遠(yuǎn)是最好的老師。
經(jīng)過一段時間的學(xué)習(xí),你只要看幾遍文檔,好好操作,你離DBA就接進(jìn)一步了。
加油吧
1、從最簡單的Access(文件型數(shù)據(jù)庫)開始吧,軟件網(wǎng)上有下載,首先基礎(chǔ)的概念必須掌握,比如什么叫表、什么叫主鍵。。。。。。
2、根據(jù)教材上的示例自己建幾個簡單的庫,熟悉各種操作。
3、學(xué)習(xí)SQL語句,掌握查詢的用法。
4、做更多的實例加深理解,掌握學(xué)到的東西。
5、學(xué)習(xí)SQLserver掌握試圖、存儲過程、觸發(fā)器、游標(biāo)等用法,掌握關(guān)系型數(shù)據(jù)庫的基本操作。
6、深入學(xué)習(xí)大型數(shù)據(jù)庫的知識,熟練復(fù)雜SQL語句的書寫。
7、根據(jù)需要再掌握Oracle、DB2等大型數(shù)據(jù)庫。有了前面的基礎(chǔ),不論學(xué)習(xí)什么品牌的數(shù)據(jù)庫都會比較容易上手。
對于非計算機(jī)出身的我,大學(xué)只會hello word和跑馬燈,期間過程確實非常曲折,分享下我的自學(xué)過程:
1、 自己在windows和linux上安裝了mysql,自學(xué)linux的基礎(chǔ)知識,學(xué)習(xí)mysql的最基礎(chǔ)的知識,即怎么寫sql,存儲過程,表的設(shè)計等,從0到熟悉大概花了3個月 ,推薦《mysql入門很簡單》。
2、系統(tǒng)地較為深入地學(xué)習(xí)mysql的sql優(yōu)化,備份和恢復(fù),參數(shù)優(yōu)化,架構(gòu)優(yōu)化,硬件層面的優(yōu)化,高可用方案,復(fù)制技術(shù)等等,這段時間你不一定能實際接觸到這些,就像我當(dāng)初那樣,肯定沒什么公司招一個小白。 我選擇自己看書,推薦《高性能mysql》,里面所有的章節(jié)都需要看一遍,以現(xiàn)在的水平肯定看不懂,但需要知道大概怎么回事,為后續(xù)的找mysql初級dba的工作打一個鋪墊,這個過程大概也需要3個月。
3、 紙上得來終覺淺,完成以上兩步,我開始準(zhǔn)備找一份mysql相關(guān)的工作,而不是天天用著excel表格做著select * from table_sb這樣的工作。 當(dāng)然我這么猥瑣的人肯定不會裸辭,該畫的電路板也一樣畫,業(yè)余時間開始投初級mysql dba的工作,并且不間斷地學(xué)習(xí),網(wǎng)上各種找mysql面試的相關(guān)題目(實際上我當(dāng)時完全沒有任何實戰(zhàn)經(jīng)驗),陸續(xù)收到一些面試,憑借之前自學(xué)的mysql知識,開始胡亂吹牛逼,先混進(jìn)去再說。 你不做mysql實際相關(guān)的工作,永遠(yuǎn)也不知道自己之前認(rèn)知的db知識有多幼稚。 友情提示一點,一般公司都沒有專職dba的,所以面試的時候一定要自信,其實你學(xué)了這么多,雖然毫無實戰(zhàn)經(jīng)驗,理論知識很大概率比面試你的人牛逼,所以各種吹,我就這樣真正進(jìn)入初級dba的圈子(由于這時對linux還處于cd ls的水平,所以之前也根本沒做過運維),這個邊工作邊找工作的過程又持續(xù)了2個月。
4、真正進(jìn)入互聯(lián)網(wǎng),接觸生產(chǎn)環(huán)境后,這是我進(jìn)步最大的時候。 第一步需要將之前所學(xué)真正地應(yīng)用起來,并且應(yīng)用的過程中,再回頭看之前的書籍,這時候需要真正去理解,而不是似是而非,一知半解。 這時再推薦《高性能mysql 第三版》,全本再看一遍,這時需要全部看懂,另外還有《mysql技術(shù)內(nèi)幕:innodb存儲引擎》等等。 總之這段時間就需要開始關(guān)注mysql一些細(xì)節(jié)了,比如db故障處理,高可用,負(fù)載均衡等等的具體實現(xiàn)了。 另外,linux的知識同步也要深入去學(xué)習(xí),至少會寫shell腳本,常見的linux知識等,我在這花了1年多;
5、 dba的工作一般是非常輕閑的,畢竟不是大公司,技術(shù)能力有限,該學(xué)的也學(xué)得差不多了,接觸不到海量數(shù)據(jù),高并發(fā)等比較鍛煉人的場合,于是我又準(zhǔn)備跳了。 于是來了公有云,現(xiàn)在每天運維萬多個db實例,平均每天處理5+個緊急db故障,幾乎mysql會遇到的問題,感覺都遇到了,能感覺到技術(shù)實力和經(jīng)驗也在每天都在積累,在進(jìn)步。 但是感覺還是欠缺了很多,下一步就看你選擇了,是再去研究源代碼,底層原理的東西多點,還是數(shù)據(jù)庫運維和應(yīng)用多一點,就比如業(yè)界姜承堯,何登成與葉金榮的區(qū)別。 由于我的歷史原因,對c++等幾乎不懂,平時也用不到,所以看代碼等事實際太累,于是我再去學(xué)mongodb,接了公司mongodb運維的活,算是在廣度上的一個擴(kuò)展,萬一哪天mysql不行了呢
6、 總之,對于db小白來說,最重要的一點就是,學(xué)習(xí)的過程不能斷。 PS 上面的方法比較野路子,適合沒什么基礎(chǔ)的童鞋,如果本來就是DBA,比如從oracle轉(zhuǎn)到mysql,那么建議直接看mysql官方文檔,而官方文檔是db達(dá)到一定水平后必看,出問題時必查的權(quán)威文檔。
先給出我的核心觀點:
學(xué)習(xí),無論你是學(xué)什么,也無論你有沒有基礎(chǔ)。思考永遠(yuǎn)是第一位的,有些知識你沒接觸過不要緊,用不著害怕,也沒必要害怕。重要的是一秒鐘也不要停止思考,問題要想透徹,正所謂磨刀不誤砍柴工。尤其是作為工程師,要有打破砂鍋問到底的精神,否則你怎么學(xué)都沒用。
首先,學(xué)習(xí)基本的SQL語法。完成這個后,你就可以編寫SQL語句了。這一步推薦:W3Schools的 SQL 教程。
其次,學(xué)習(xí)數(shù)據(jù)庫的主要功能和使用方法,比如用戶相關(guān)或者權(quán)限相關(guān)等等。
我推薦兩本書:
一、《MySQL必知必會》 這本書講的非常全,從基本概念,到查詢到插入新建表,用戶的管理,都有具體的例子,非常適合沒有任何基礎(chǔ)的同學(xué)來學(xué)習(xí)Mysql,總之這本書學(xué)習(xí)的方法就是:1、十分鐘了解下數(shù)據(jù)庫的基本概念 2、找到練手的數(shù)據(jù)庫 3、對照著上面的內(nèi)容去敲。本書里也有大量的內(nèi)容是講sql的,可以結(jié)合w3c的sql教程一起,有取舍地看。
二、《數(shù)據(jù)庫系統(tǒng)概念》這本書是dba必看的。看完這些并且實踐+思考之后,可以算入門了。接下來對于希望深入學(xué)習(xí)的童鞋我推薦幾本書(很多大神都這么推薦),《高性能MySQL(第3版)》、 《MySQL技術(shù)內(nèi)幕(第4版)》,《MySQL技術(shù)內(nèi)幕 InnoDB存儲引擎》,《深入理解MySQL》還有Mysql的官網(wǎng)。讀完這些東西,再加些豐富的經(jīng)驗,理論上來講就具備DBA的水平了。十分推薦閱讀Planet MySQL上匯總的博客,特別是Percona's MySQL InnoDB performance and scalability blog但是,正如我開頭所言的。
面對問題的時候一定要積極思考!比如:我問你,面對一個并發(fā)量比較高的場景,如何配置mysql的連接數(shù)?你可能會回答:“哦,就是調(diào)高max_connection的數(shù)值吧?!蹦牵阌袥]有思考過調(diào)到多少是最合適的呢?為什么這樣設(shè)置就最合適呢?也許你會回答:“恩我知道,可以看系統(tǒng)之前的max_used_connection的數(shù)值,然后來設(shè)置。也可以調(diào)高back_log的值。”那你有沒有思考過,max_connection連接數(shù)太高會有什么不好的影響呢?back_log設(shè)置的太高有什么不好的地方呢?max_connect的上限其實是取決于mysql能獲得的文件描述符的數(shù)量,也就是說你就算設(shè)置成10000,最后也是沒用的,系統(tǒng)會根據(jù)機(jī)器的情況自動調(diào)低。也許你會回答:“恩我知道,設(shè)置太高,會有系統(tǒng)開銷...”那你有沒有思考過,這些開銷具體是什么呢?是什么工作導(dǎo)致了需要這些內(nèi)存開銷?也許你還會回答,在連接創(chuàng)建的時候,會立刻為它分配連接緩沖區(qū)以及查詢緩沖區(qū),這些都會吃內(nèi)存。那你有沒有思考過,占據(jù)的資源具體是多少呢?取決于哪些因素呢?好了,我們先結(jié)束這個問題?;氐街醯膯栴}上來,其實我說了這么多,就是表達(dá)要如何自學(xué)mysql。所以的所以,你必須不斷思考,才能在工作中面對具體場景的時候,非常淡定地推斷:“哦,一定是這里出了問題。應(yīng)該怎么怎么做?!泵鎸栴},拿出打破砂鍋問到底的精神,先思考一番,給出自己的假設(shè),不要著急地去找度娘,谷歌。思考過后,帶著你的推斷或者答案,大膽地去搜索吧!去看看別人的見解,去看看官方的描述!這才是一個工程師應(yīng)有的態(tài)度。最后我想給出一些有價值的學(xué)習(xí)資料??梢允∪ヒ恍r間。-電子書:我認(rèn)為多看書還是有好處的。有些書值得反復(fù)看許多遍,有時候只看一遍無法深刻理解吸收,思考也不夠充分
我對mysql不熟悉,但是我覺得達(dá)到我認(rèn)為的熟悉程度需要滿足以下:
熟悉所有mysql特有的sql語句和數(shù)據(jù)類型,比如mysql中分頁用limit,對應(yīng)的oracle用rownum之類的,不能寫個sql還要去google一把
熟悉百分之八十mysql配置,包括mysql庫中的那些配置數(shù)據(jù)表,配置文件等,知道這些配置可以解決那些問題;知道不同操作系統(tǒng)下的不同注意點。
mysql的部署,主從,主主從從
原生mysql的一些限制或者說特點,算經(jīng)驗值吧。。比如單實例大小不要超過150G,帶變成字段的數(shù)據(jù)表行數(shù)不要超過500萬行等等
達(dá)到精通:
熟悉所有mysql的配置,包括數(shù)據(jù)庫中的配置和配置文件的,能夠針對不同的部署環(huán)境做出特定的調(diào)優(yōu),包括性能和安全
開始研究源代碼,從源代碼層面反推出一些特性
為了解決某個問題,至少知道從哪個地方切入修改源代碼能解決
能夠針對業(yè)務(wù)需求和mysql的特性,給出最合理的設(shè)計
以上,都是我吹牛X的,我自己也沒達(dá)到熟悉的程度,僅供參考。
首先mysql是c++開發(fā)的。
github地址:
很多大型軟件基本都是c/c++開發(fā)的。你會了c/c++基本就具備了領(lǐng)略程序世界的大門的鑰匙。
mysql是一個完善的數(shù)據(jù)庫軟件。
最上層:處理連接,授權(quán)認(rèn)證,安全等
第二層:核心服務(wù)功能:查詢解析,分析,優(yōu)化,緩存以及所有內(nèi)置函數(shù)(日期,時間,數(shù)據(jù),加密等),存儲過程,觸發(fā)器,視圖等。
第三層:存儲引擎,存儲引擎負(fù)責(zé)mysql中數(shù)據(jù)的存儲和提取。每個引擎各有優(yōu)勢。服務(wù)器通過API與存儲引擎進(jìn)行通信。接口屏蔽了不同引擎的差異,對上層的查詢過程透明。
你如果去讀它,你基本就可以深入到這些業(yè)務(wù)點中。然后獲取的提升絕對不是一星半點。你會發(fā)現(xiàn)開發(fā)一個web應(yīng)用,開發(fā)一個中間件如此簡單。你獲取的是大神級工程師的開發(fā)思想,技巧。
舉個例子:MVCC ,innodb 隔離性實現(xiàn)的技術(shù)。
設(shè)計原理很簡單,也很巧妙。對數(shù)據(jù)安全和高并發(fā)做了平衡處理。
這個是單純學(xué)習(xí)計算機(jī)語言,算法數(shù)據(jù)結(jié)構(gòu)給不了的體驗。
當(dāng)前,你得能看的下去,你有那個恒心。吹牛逼就不要在這里問了?
首先,能看懂 MySQL 源碼的人物,我感覺肯定在技術(shù)上是一位大牛,能夠?qū)?C/C++ 語言的 MySQL 源碼看懂,肯定也是一位非常有耐心的技術(shù)人,能夠耐著性子去專研。 如果能夠?qū)ysql源碼研究的很透徹的話,我相信出去到大廠找數(shù)據(jù)庫內(nèi)核開發(fā)的崗位時,絕對是一個非常巨大的優(yōu)勢。
能看懂 Mysql 的源碼,首先第一點需要對 C/C++ 語言的知識點非常的熟悉,因為 MySQL 底層幾乎都是 C/C++ 語言寫的,比如指針等。 對于 MySQL 源碼能夠看得的話,我相信在和別人談?wù)摂?shù)據(jù)庫相關(guān)的問題時,其實也會更加有專業(yè)性和深度,能夠快速的理解對方所說的數(shù)據(jù)庫問題。
同時,如果對 MySQL 源碼有著很深入了解的話,其實對于數(shù)據(jù)庫的相關(guān)配置優(yōu)化等也會掌握的更好,因為你對底層原理了解的很透徹,對于自己做的每一件事情都是有理有據(jù)。每個數(shù)據(jù)庫參數(shù)是什么含義,為什么要這樣設(shè)置,背后都有你自己的理解和原因。這對于公司來說,也是非常需要這樣的人才。
當(dāng)初我校招的時候,其實準(zhǔn)備想投數(shù)據(jù)庫開發(fā)相關(guān)的崗位,當(dāng)時其實自己也自學(xué)過 MySQL 底層的原理(不過我沒有去研究過源碼)。 MySQL 最主要的還是底層可插拔式的存儲引擎,比如 InnoDB、MYISAM等,重點是 InnoDB存儲引擎。學(xué)習(xí)看 MySQL 源碼的話,我建議可以選擇其中一個模塊開始入手。
我剛開始看 《MySQL 技術(shù)內(nèi)幕:InnoDB存儲引擎》 這本書的時候,上面講解的非常多的 MySQL InnoDB 的原理。先從原理知識入手,再去看源碼會更加好一些,因為你掌握了整體的代碼邏輯方向。說實話直接上手看 MySQL 源碼,將會是很難的一件事情。我相信那些能夠看懂 MySQL 源碼的人,肯定在看源碼之前,有一定的技術(shù)知識儲備。
新同學(xué)在去研究某一門開源技術(shù)組件的源碼時,不建議直接上手去看代碼,你應(yīng)該是先去整體了解一下該技術(shù)組件的整體原理和框架,源碼層則是更加細(xì)節(jié)方面的實現(xiàn),你應(yīng)該帶著某一個問題去看,有針對性和目的性的去看源碼,這樣你的提升才會更加的快速。
我會持續(xù)大數(shù)據(jù)、數(shù)據(jù)庫方面的內(nèi)容,如果你有任何問題,也歡迎關(guān)注私信我,我會認(rèn)真解答每一個問題。期待您的關(guān)注
閱讀代碼,一般都是一件繁復(fù)的工作。程序員,只要工作需要、或有足夠的時間,都能夠勝任閱讀代碼的工作,特別是數(shù)據(jù)庫這類功能具體的系統(tǒng)。如果軟件的功能不確定,閱讀起來確實有莫名的困難。年輕時,得到“一套”Z80匯編碼,閑來無聊,嘗試閱讀,數(shù)周過去,不得要領(lǐng)。直到在一個忽略了的簡單文檔的闡述上下文中,意識到代碼可能是實現(xiàn)“導(dǎo)彈”穩(wěn)定飛行的側(cè)滾控制系統(tǒng)時,閱讀中的問題瞬間都消失了。
拜托啦,我不只能看懂你的SQL,我還可以看懂VB、C++、數(shù)據(jù)庫我也看
本文題目:mysql怎么才算熟悉 怎么學(xué)好mysql
分享地址:http://jinyejixie.com/article44/hpdhee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、靜態(tài)網(wǎng)站、軟件開發(fā)、ChatGPT、自適應(yīng)網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)