對(duì)于非計(jì)算機(jī)出身的我,大學(xué)只會(huì)hello word和跑馬燈,期間過程確實(shí)非常曲折,分享下我的自學(xué)過程:
10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有廬山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1、 自己在windows和linux上安裝了mysql,自學(xué)linux的基礎(chǔ)知識(shí),學(xué)習(xí)mysql的最基礎(chǔ)的知識(shí),即怎么寫sql,存儲(chǔ)過程,表的設(shè)計(jì)等,從0到熟悉大概花了3個(gè)月 ,推薦《mysql入門很簡(jiǎn)單》。
2、系統(tǒng)地較為深入地學(xué)習(xí)mysql的sql優(yōu)化,備份和恢復(fù),參數(shù)優(yōu)化,架構(gòu)優(yōu)化,硬件層面的優(yōu)化,高可用方案,復(fù)制技術(shù)等等,這段時(shí)間你不一定能實(shí)際接觸到這些,就像我當(dāng)初那樣,肯定沒什么公司招一個(gè)小白。 我選擇自己看書,推薦《高性能mysql》,里面所有的章節(jié)都需要看一遍,以現(xiàn)在的水平肯定看不懂,但需要知道大概怎么回事,為后續(xù)的找mysql初級(jí)dba的工作打一個(gè)鋪墊,這個(gè)過程大概也需要3個(gè)月。
3、 紙上得來終覺淺,完成以上兩步,我開始準(zhǔn)備找一份mysql相關(guān)的工作,而不是天天用著excel表格做著select * from table_sb這樣的工作。 當(dāng)然我這么猥瑣的人肯定不會(huì)裸辭,該畫的電路板也一樣畫,業(yè)余時(shí)間開始投初級(jí)mysql dba的工作,并且不間斷地學(xué)習(xí),網(wǎng)上各種找mysql面試的相關(guān)題目(實(shí)際上我當(dāng)時(shí)完全沒有任何實(shí)戰(zhàn)經(jīng)驗(yàn)),陸續(xù)收到一些面試,憑借之前自學(xué)的mysql知識(shí),開始胡亂吹牛逼,先混進(jìn)去再說。 你不做mysql實(shí)際相關(guān)的工作,永遠(yuǎn)也不知道自己之前認(rèn)知的db知識(shí)有多幼稚。 友情提示一點(diǎn),一般公司都沒有專職dba的,所以面試的時(shí)候一定要自信,其實(shí)你學(xué)了這么多,雖然毫無實(shí)戰(zhàn)經(jīng)驗(yàn),理論知識(shí)很大概率比面試你的人牛逼,所以各種吹,我就這樣真正進(jìn)入初級(jí)dba的圈子(由于這時(shí)對(duì)linux還處于cd ls的水平,所以之前也根本沒做過運(yùn)維),這個(gè)邊工作邊找工作的過程又持續(xù)了2個(gè)月。
4、真正進(jìn)入互聯(lián)網(wǎng),接觸生產(chǎn)環(huán)境后,這是我進(jìn)步最大的時(shí)候。 第一步需要將之前所學(xué)真正地應(yīng)用起來,并且應(yīng)用的過程中,再回頭看之前的書籍,這時(shí)候需要真正去理解,而不是似是而非,一知半解。 這時(shí)再推薦《高性能mysql 第三版》,全本再看一遍,這時(shí)需要全部看懂,另外還有《mysql技術(shù)內(nèi)幕:innodb存儲(chǔ)引擎》等等。 總之這段時(shí)間就需要開始關(guān)注mysql一些細(xì)節(jié)了,比如db故障處理,高可用,負(fù)載均衡等等的具體實(shí)現(xiàn)了。 另外,linux的知識(shí)同步也要深入去學(xué)習(xí),至少會(huì)寫shell腳本,常見的linux知識(shí)等,我在這花了1年多;
5、 dba的工作一般是非常輕閑的,畢竟不是大公司,技術(shù)能力有限,該學(xué)的也學(xué)得差不多了,接觸不到海量數(shù)據(jù),高并發(fā)等比較鍛煉人的場(chǎng)合,于是我又準(zhǔn)備跳了。 于是來了公有云,現(xiàn)在每天運(yùn)維萬多個(gè)db實(shí)例,平均每天處理5+個(gè)緊急db故障,幾乎mysql會(huì)遇到的問題,感覺都遇到了,能感覺到技術(shù)實(shí)力和經(jīng)驗(yàn)也在每天都在積累,在進(jìn)步。 但是感覺還是欠缺了很多,下一步就看你選擇了,是再去研究源代碼,底層原理的東西多點(diǎn),還是數(shù)據(jù)庫(kù)運(yùn)維和應(yīng)用多一點(diǎn),就比如業(yè)界姜承堯,何登成與葉金榮的區(qū)別。 由于我的歷史原因,對(duì)c++等幾乎不懂,平時(shí)也用不到,所以看代碼等事實(shí)際太累,于是我再去學(xué)mongodb,接了公司mongodb運(yùn)維的活,算是在廣度上的一個(gè)擴(kuò)展,萬一哪天mysql不行了呢
6、 總之,對(duì)于db小白來說,最重要的一點(diǎn)就是,學(xué)習(xí)的過程不能斷。 PS 上面的方法比較野路子,適合沒什么基礎(chǔ)的童鞋,如果本來就是DBA,比如從oracle轉(zhuǎn)到mysql,那么建議直接看mysql官方文檔,而官方文檔是db達(dá)到一定水平后必看,出問題時(shí)必查的權(quán)威文檔。
先給出我的核心觀點(diǎn):
學(xué)習(xí),無論你是學(xué)什么,也無論你有沒有基礎(chǔ)。思考永遠(yuǎn)是第一位的,有些知識(shí)你沒接觸過不要緊,用不著害怕,也沒必要害怕。重要的是一秒鐘也不要停止思考,問題要想透徹,正所謂磨刀不誤砍柴工。尤其是作為工程師,要有打破砂鍋問到底的精神,否則你怎么學(xué)都沒用。
首先,學(xué)習(xí)基本的SQL語法。完成這個(gè)后,你就可以編寫SQL語句了。這一步推薦:W3Schools的 SQL 教程。
其次,學(xué)習(xí)數(shù)據(jù)庫(kù)的主要功能和使用方法,比如用戶相關(guān)或者權(quán)限相關(guān)等等。
我推薦兩本書:
一、《MySQL必知必會(huì)》 這本書講的非常全,從基本概念,到查詢到插入新建表,用戶的管理,都有具體的例子,非常適合沒有任何基礎(chǔ)的同學(xué)來學(xué)習(xí)Mysql,總之這本書學(xué)習(xí)的方法就是:1、十分鐘了解下數(shù)據(jù)庫(kù)的基本概念 2、找到練手的數(shù)據(jù)庫(kù) 3、對(duì)照著上面的內(nèi)容去敲。本書里也有大量的內(nèi)容是講sql的,可以結(jié)合w3c的sql教程一起,有取舍地看。
二、《數(shù)據(jù)庫(kù)系統(tǒng)概念》這本書是dba必看的??赐赀@些并且實(shí)踐+思考之后,可以算入門了。接下來對(duì)于希望深入學(xué)習(xí)的童鞋我推薦幾本書(很多大神都這么推薦),《高性能MySQL(第3版)》、 《MySQL技術(shù)內(nèi)幕(第4版)》,《MySQL技術(shù)內(nèi)幕 InnoDB存儲(chǔ)引擎》,《深入理解MySQL》還有Mysql的官網(wǎng)。讀完這些東西,再加些豐富的經(jīng)驗(yàn),理論上來講就具備DBA的水平了。十分推薦閱讀Planet MySQL上匯總的博客,特別是Percona's MySQL InnoDB performance and scalability blog但是,正如我開頭所言的。
面對(duì)問題的時(shí)候一定要積極思考!比如:我問你,面對(duì)一個(gè)并發(fā)量比較高的場(chǎng)景,如何配置mysql的連接數(shù)?你可能會(huì)回答:“哦,就是調(diào)高max_connection的數(shù)值吧?!蹦?,你有沒有思考過調(diào)到多少是最合適的呢?為什么這樣設(shè)置就最合適呢?也許你會(huì)回答:“恩我知道,可以看系統(tǒng)之前的max_used_connection的數(shù)值,然后來設(shè)置。也可以調(diào)高back_log的值?!蹦悄阌袥]有思考過,max_connection連接數(shù)太高會(huì)有什么不好的影響呢?back_log設(shè)置的太高有什么不好的地方呢?max_connect的上限其實(shí)是取決于mysql能獲得的文件描述符的數(shù)量,也就是說你就算設(shè)置成10000,最后也是沒用的,系統(tǒng)會(huì)根據(jù)機(jī)器的情況自動(dòng)調(diào)低。也許你會(huì)回答:“恩我知道,設(shè)置太高,會(huì)有系統(tǒng)開銷...”那你有沒有思考過,這些開銷具體是什么呢?是什么工作導(dǎo)致了需要這些內(nèi)存開銷?也許你還會(huì)回答,在連接創(chuàng)建的時(shí)候,會(huì)立刻為它分配連接緩沖區(qū)以及查詢緩沖區(qū),這些都會(huì)吃內(nèi)存。那你有沒有思考過,占據(jù)的資源具體是多少呢?取決于哪些因素呢?好了,我們先結(jié)束這個(gè)問題?;氐街醯膯栴}上來,其實(shí)我說了這么多,就是表達(dá)要如何自學(xué)mysql。所以的所以,你必須不斷思考,才能在工作中面對(duì)具體場(chǎng)景的時(shí)候,非常淡定地推斷:“哦,一定是這里出了問題。應(yīng)該怎么怎么做?!泵鎸?duì)問題,拿出打破砂鍋問到底的精神,先思考一番,給出自己的假設(shè),不要著急地去找度娘,谷歌。思考過后,帶著你的推斷或者答案,大膽地去搜索吧!去看看別人的見解,去看看官方的描述!這才是一個(gè)工程師應(yīng)有的態(tài)度。最后我想給出一些有價(jià)值的學(xué)習(xí)資料??梢允∪ヒ恍r(shí)間。-電子書:我認(rèn)為多看書還是有好處的。有些書值得反復(fù)看許多遍,有時(shí)候只看一遍無法深刻理解吸收,思考也不夠充分
在MYSQL 中 終于引入了存儲(chǔ)過程這一新特性 這將大大增強(qiáng)MYSQL 的數(shù)據(jù)庫(kù)處理能力 在本文中 將指導(dǎo)讀者快速掌握MYSQL 的存儲(chǔ)過程的基本知識(shí) 帶領(lǐng)用戶入門
存儲(chǔ)過程介紹
存儲(chǔ)過程是一組為了完成特定功能的SQL語句集 經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中 用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來執(zhí)行它 存儲(chǔ)過程可由應(yīng)用程序通過一個(gè)調(diào)用來執(zhí)行 而且允許用戶聲明變量 同時(shí) 存儲(chǔ)過程可以接收和輸出參數(shù) 返回執(zhí)行存儲(chǔ)過程的狀態(tài)值 也可以嵌套調(diào)用
存儲(chǔ)過程的優(yōu)點(diǎn)
作為存儲(chǔ)過程 有以下這些優(yōu)點(diǎn)
( )減少網(wǎng)絡(luò)通信量 調(diào)用一個(gè)行數(shù)不多的存儲(chǔ)過程與直接調(diào)用SQL語句的網(wǎng)絡(luò)通信量可能不會(huì)有很大的差別 可是如果存儲(chǔ)過程包含上百行SQL語句 那么其性能絕對(duì)比一條一條的調(diào)用SQL語句要高得多
( )執(zhí)行速度更快 存儲(chǔ)過程創(chuàng)建的時(shí)候 數(shù)據(jù)庫(kù)已經(jīng)對(duì)其進(jìn)行了一次解析和優(yōu)化 其次 存儲(chǔ)過程一旦執(zhí)行 在內(nèi)存中就會(huì)保留一份這個(gè)存儲(chǔ)過程 這樣下次再執(zhí)行同樣的存儲(chǔ)過程時(shí) 可以從內(nèi)存中直接中讀取
( )更強(qiáng)的安全性 存儲(chǔ)過程是通過向用戶授予權(quán)限(而不是基于表) 它們可以提供對(duì)特定數(shù)據(jù)的訪問 提高代碼安全 比如防止 SQL注入
( ) 業(yè)務(wù)邏輯可以封裝存儲(chǔ)過程中 這樣不僅容易維護(hù) 而且執(zhí)行效率也高
當(dāng)然存儲(chǔ)過程也有一些缺點(diǎn) 比如
可移植性方面 當(dāng)從一種數(shù)據(jù)庫(kù)遷移到另外一種數(shù)據(jù)庫(kù)時(shí) 不少的存儲(chǔ)過程的編寫要進(jìn)行部分修改
存儲(chǔ)過程需要花費(fèi)一定的學(xué)習(xí)時(shí)間去學(xué)習(xí) 比如學(xué)習(xí)其語法等
在MYSQL中 推薦使用MYSQL Query Browswer()這個(gè)工具去進(jìn)行存儲(chǔ)過程的開發(fā)和管理 下面分步驟來學(xué)習(xí)MYSQL中的存儲(chǔ)過程
定義存儲(chǔ)過程的結(jié)束符
在存儲(chǔ)過程中 通常要輸入很多SQL語句 而SQL語句中每個(gè)語句以分號(hào)來結(jié)束 因此要告訴存儲(chǔ)過程 什么位置是意味著整個(gè)存儲(chǔ)過程結(jié)束 所以我們?cè)诰帉懘鎯?chǔ)過程前 先定義分隔符 我們這里定義 // 為分隔符 我們使用DELIMITER //這樣的語法 就可以定義結(jié)束符了 當(dāng)然你可以自己定義其他喜歡的符號(hào)
如何創(chuàng)建存儲(chǔ)過程
下面先看下一個(gè)簡(jiǎn)單的例子 代碼如下
DELIMITER?//CREATEPROCEDURE?`p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT? A procedure BEGINSELECT Hello World ! ;END//
下面講解下存儲(chǔ)過程的組成部分
)首先在定義好終結(jié)符后 使用CREATE PROCEDURE+存儲(chǔ)過程名的方法創(chuàng)建存儲(chǔ)過程 LANGUAGE選項(xiàng)指定了使用的語言 這里默認(rèn)是使用SQL
)DETERMINISTIC關(guān)鍵詞的作用是 當(dāng)確定每次的存儲(chǔ)過程的輸入和輸出都是相同的內(nèi)容時(shí) 可以使用該關(guān)鍵詞 否則默認(rèn)為NOT DETERMINISTIC
) SQL SECURITY關(guān)鍵詞 是表示調(diào)用時(shí)檢查用戶的權(quán)限 當(dāng)值為INVOKER時(shí) 表示是用戶調(diào)用該存儲(chǔ)過程時(shí)檢查 默認(rèn)為DEFINER 即創(chuàng)建存儲(chǔ)過程時(shí)檢查
) MENT部分是存儲(chǔ)過程的注釋說明部分
lishixinzhi/Article/program/MySQL/201404/30557
網(wǎng)頁(yè)標(biāo)題:mysql數(shù)據(jù)庫(kù)怎么入門 mysql數(shù)據(jù)庫(kù)入門傳智播客答案
本文地址:http://aaarwkj.com/article34/doooose.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、用戶體驗(yàn)、全網(wǎng)營(yíng)銷推廣、虛擬主機(jī)、商城網(wǎng)站、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)