太厲害了德挣!華為大牛終于把MySQL講的明明白白(基礎+優(yōu)化+架構(gòu))

愛因斯坦說過“耐心和恒心總會得到報酬的”恭垦,我也一直把這句話當做自己的座右銘,這句箴言在今年也徹底在“我”身上實現(xiàn)了。

每一個程序員都擁有一座大廠夢番挺,我也不例外唠帝,去年面試阿里,竟然被MySQL問倒了建芙,很多相關性的問題都沒有答上來没隘,才2面就涼涼了懂扼。為面試做了很多準備禁荸,收集很多關于MySQL面試題

MySQL有哪些特性?

  1. 使用C和C++編寫阀湿,并使用了多種編譯器進行測試赶熟,保證源代碼的可移植性
  2. 支持AIX、FreeBSD陷嘴、HP-UX映砖、Linux、MacOS灾挨、Novell Netware邑退、OpenBSD、OS/2 Wrap劳澄、Solaris地技、Windows等多種操作系統(tǒng)
  3. 為多種編程語言提供了API。這些編程語言包括C秒拔、C++莫矗、Python、Java砂缩、Perl作谚、PHP、Eiffel庵芭、Ruby和Tcl等妹懒。
  4. 支持多線程,充分利用CPU資源
  5. 化的SQL查詢算法双吆,有效地提高查詢速度
  6. 既能夠作為一個單獨的應用程序應用在客戶端服務器網(wǎng)絡環(huán)境中眨唬,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312伊诵、BIG5单绑,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名
  7. 提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑
  8. 提供用于管理曹宴、檢查搂橙、優(yōu)化數(shù)據(jù)庫操作的管理工具
  9. 可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫

走進MySQL的世界

1、MySQL 性能優(yōu)化的 21 個最佳實踐

  1. 為查詢緩存優(yōu)化你的查詢
  2. EXPLAIN 你的 SELECT 查詢
  3. 當只要一行數(shù)據(jù)時使用 LIMIT 1
  4. 為搜索字段建索引
  5. 在 Join 表的時候使用相當類型的例,并將其索引
  6. 千萬不要 ORDER BY RAND()
  7. 避免 SELECT *
  8. 永遠為每張表設置一個 ID
  9. 使用 ENUM 而不是 VARCHAR
  10. 從 PROCEDURE ANALYSE() 取得建議
  11. 盡可能的使用 NOT NULL
  12. Prepared Statements
  13. 無緩沖的查詢
  14. 把 IP 地址存成 UNSIGNED INT
  15. 固定長度的表會更快
  16. 垂直分割
  17. 拆分大的 DELETE 或 INSERT 語句
  18. 越小的列會越快
  19. 選擇正確的存儲引擎
  20. 選擇正確的存儲引擎
  21. 小心“永久鏈接”

2区转、MySQL面試題總結(jié)

之前的阿里面試題都有做總結(jié)苔巨,具體面試題內(nèi)容整理成了文檔,本文是針對MySQL系列的废离,所以下面只展示了自己第一次面試阿里時被吊打問到的一些MySQL難題侄泽,下面是今年面試阿里遇到MySQL的題目。

2.1.其他專題內(nèi)容(含答案)的文檔資料蜻韭,點擊此處即可領取!悼尾。

  1. 請解釋關系型數(shù)據(jù)庫概念及主要特點?
  2. 請說出關系型數(shù)據(jù)庫的典型產(chǎn)品肖方、特點及應用場景闺魏?
  3. 請詳細描述 SQL 語句分類及對應代表性關鍵字。
  4. 什么是 MySQL 多實例俯画,如何配置 MySQL 多實例析桥?
  5. 如何加強 MySQL 安全,請給出可行的具體措施艰垂?
  6. 誤操作執(zhí)行了一個 drop 庫 SQL 語句泡仗,如何完整恢復?
  7. 詳述 MySQL 主從復制原理及配置主從的完整步驟猜憎。
  8. MySQL 如何實現(xiàn)雙向互為主從復制娩怎,并說明應用場景?
  9. MySQL 如何實現(xiàn)級聯(lián)同步拉宗,并說明應用場景峦树?
  10. MySQL 主從復制故障如何解決?

2.2.MySQL55道面試專題你能答出多少旦事?

  1. 一張表魁巩,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后姐浮,刪除了第 15,16,17 條記錄谷遂,再把 Mysql 重啟,再 insert 一條記錄卖鲤,這條記錄的 ID 是 18 還是 15 肾扰?
  2. Mysql 的技術(shù)特點是什么?
  3. Heap表是什么蛋逾?
  4. Mysql 服務器默認端口是什么集晚?
  5. 與 Oracle 相比,Mysql 有什么優(yōu)勢区匣?
  6. 如何區(qū)分 FLOAT 和 DOUBLE偷拔?
  7. 區(qū)分 CHAR_LENGTH 和 LENGTH?
  8. 請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區(qū)別莲绰?
  9. 在 Mysql 中 ENUM 的用法是什么欺旧?
  10. 如何定義 REGEXP?
  11. CHAR 和 VARCHAR 的區(qū)別蛤签?
  12. 列的字符串類型可以是什么辞友?
  13. 如何獲取當前的 Mysql 版本?
  14. Mysql 中使用什么存儲引擎震肮?
  15. Mysql 驅(qū)動程序是什么称龙?
  16. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數(shù)據(jù)類型上做什么?
  17. 主鍵和候選鍵有什么區(qū)別钙蒙?
  18. 如何使用 Unix shell 登錄 Mysql茵瀑?
  19. myisamchk 是用來做什么的间驮?
  20. MYSQL 數(shù)據(jù)庫服務器性能分析的方法命令有哪些?
  21. 如何控制 HEAP 表的最大尺寸躬厌?
  22. MyISAM Static 和 MyISAM Dynamic 有什么區(qū)別?
  23. federated 表是什么竞帽?
  24. 如果一個表有一列定義為 TIMESTAMP扛施,將發(fā)生什么?
  25. 列設置為 AUTO INCREMENT 時屹篓,如果在表中達到最大值疙渣,會發(fā)生什么情況?
  26. 怎樣才能找出最后一次插入時分配了哪個自動增量堆巧?
  27. 你怎么看到為表格定義的所有索引妄荔?
  28. LIKE 聲明中的%和_是什么意思?
  29. 如何在 Unix 和 Mysql 時間戳之間進行轉(zhuǎn)換谍肤?
  30. 列對比運算符是什么啦租?
  31. 我們?nèi)绾蔚玫绞懿樵冇绊懙男袛?shù)?
  32. Mysql 查詢是否區(qū)分大小寫荒揣?
  33. LIKE 和 REGEXP 操作有什么區(qū)別篷角?
  34. BLOB 和 TEXT 有什么區(qū)別?
  35. mysql_fetch_array 和 mysql_fetch_object 的區(qū)別是什么系任?
  36. 我們?nèi)绾卧?mysql 中運行批處理模式恳蹲?
  37. MyISAM 表格將在哪里存儲,并且還提供其存儲格式俩滥?
  38. Mysql 中有哪些不同的表格嘉蕾?
  39. ISAM 是什么?
  40. InnoDB 是什么霜旧?
  41. Mysql 如何優(yōu)化 DISTINCT错忱?
  42. 如何輸入字符為十六進制數(shù)字?
  43. 如何顯示前 50 行?
  44. 可以使用多少列創(chuàng)建索引航背?
  45. NOW()和 CURRENT_DATE()有什么區(qū)別喉悴?
  46. 什么樣的對象可以使用 CREATE 語句創(chuàng)建?
  47. Mysql 表中允許有多少個 TRIGGERS玖媚?
  48. 什么是非標準字符串類型箕肃?
  49. 什么是通用 SQL 函數(shù)?
  50. 解釋訪問控制列表
  51. MYSQL 支持事務嗎今魔?
  52. mysql 里記錄貨幣用什么字段類型好
  53. MYSQL 數(shù)據(jù)表在什么情況下容易損壞勺像?
  54. mysql 有關權(quán)限的表都有哪幾個?
  55. Mysql 中有哪幾種鎖错森?

3吟宦、MySQL 性能調(diào)優(yōu)與架構(gòu)設計

  • 基礎篇:
  1. MySQL基本介紹
  2. MySQL架構(gòu)組成
  3. MySQL存儲引擎簡介
  4. MySQL安全管理
  5. MySQL備份與恢復
  • 性能優(yōu)化篇:
  1. 影響MySQLServer性能的相關因素
  2. MySQL數(shù)據(jù)庫鎖定機制
  3. MySQL數(shù)據(jù)庫Query的優(yōu)化
  4. MySQL數(shù)據(jù)庫Schema設計的性能優(yōu)化
  5. MySQLServer性能優(yōu)化
  6. 常用存儲引擎優(yōu)化
  • 架構(gòu)設計篇:
  1. MySQL可擴展設計的基本原則
  2. 可擴展性設計之MySQLReplication
  3. 可擴展性設計之數(shù)據(jù)切分
  4. 可擴展性設計之Cache與Search的..
  5. MySQLCluster
  6. 高可用設計之思路及方案
  7. 高可用設計之MySQL監(jiān)控

MySQL架構(gòu)與歷史

和其他數(shù)據(jù)庫系統(tǒng)相比,MySQL有點與眾不同涩维,它的架構(gòu)可以在多種不同場景中應用并發(fā)揮好的作用殃姓,但同時也會帶來-點選擇上的困難。MySQL并不完美瓦阐,卻足夠靈活蜗侈,能夠適應高要求的環(huán)境,例如Web類應用睡蟋。同時踏幻,MySQL既可以嵌入到應用程序中,也可以支持數(shù)據(jù)倉庫戳杀、內(nèi)容索引和部署軟件该面、高可用的冗余系統(tǒng)、在線事務處理系統(tǒng)(OLTP)等各種應用類型信卡。

轉(zhuǎn)發(fā)+關注后點擊此處即可領取!即可免費領取史上最全MySQL實戰(zhàn)文檔

服務器性能剖析

在我們的技術(shù)咨詢生涯中隔缀,最常碰到的三個性能相關的服務請求是:如何確認服務器是否達到了性能最佳的狀態(tài)、找出某條語句為什么執(zhí)行不夠快坐求,以及診斷被用戶描述成“停頓"蚕泽、“堆積"或者“卡死"的某些間歇性疑難故障。本章將主要針對這三個問題做出解答桥嗤。我們將提供- - 些工具和技巧來優(yōu)化整機的性能须妻、優(yōu)化單條語句的執(zhí)行速度,以及診斷或者解決那些很難觀察到的問題(這些問題用戶往往很難知道其根源泛领,有時候甚至都很難察覺到它的存在)荒吏。

查詢性能優(yōu)化

前面是介紹了如何設計最優(yōu)的庫表結(jié)構(gòu)、如何建立最好的索引渊鞋,這些對于高性能來說是必不可少的绰更。但這些還不夠一還需 要合理的設計查詢瞧挤。如果查詢寫得很糟糕,即使庫表結(jié)構(gòu)再合理儡湾、索引再合適特恬,也無法實現(xiàn)高性能。

MySQL高級特性

MySQL從5.0和5.1版本開始引入了很多高級特性徐钠,例如分區(qū)癌刽、觸發(fā)器等,這對有其他關系型數(shù)據(jù)庫使用背景的用戶來說可能并不陌生尝丐。這些新特性吸引了很多用戶開始使用MySQL显拜。不過,這些特性的性能到底如何爹袁,還需要用戶真正使用過才能知道远荠。這里我們將為大家介紹,在真實的世界中失息,這些特性表現(xiàn)如何譬淳,而不是只簡單地介紹參考手冊或者宜傳材料.上的數(shù)據(jù)。

轉(zhuǎn)發(fā)+關注后點擊此處即可領取!即可免費領取史上最全MySQL實戰(zhàn)文檔

優(yōu)化服務器設置

這里我們將解釋為MySQL服務器創(chuàng)建一個靠譜的配置文件的過程根时。這是一個很繞的過程瘦赫,有很多有意思的關注點和值得關注的思路。關注這些點很有必要蛤迎,因為創(chuàng)建個好配置的最快方法不是從學習配置項開始,也不是從問哪個配置項應該怎么設置或者怎么修改開始含友,更不是從檢查服務器行為和詢問哪個配置項可以提升性能開始替裆。

最好是從理解MySQL內(nèi)核和行為開始。然后可以利用這些知識來指導配置MySQL.最后窘问,可以將想要的配置和當前配置進行比較辆童,然后糾正重要并且有價值的不同之處。

轉(zhuǎn)發(fā)+關注后點擊此處即可領取!即可免費領取史上最全MySQL實戰(zhàn)文檔

復制

MySQL內(nèi)建的復制功能是構(gòu)建基于MySQL的大規(guī)模惠赫、高性能應用的基礎把鉴,這類應用使用所謂的“水平擴展”的架構(gòu)。我們可以通過為服務器配置一個或多個備庫生1的方式來進行數(shù)據(jù)同步儿咱。復制功能不僅有利于構(gòu)建高性能的應用庭砍,同時也是高可用性、可擴展性混埠、災難恢復怠缸、備份以及數(shù)據(jù)倉庫等工作的基礎。事實上钳宪,可擴展性和高可用性通常是相關聯(lián)的話題揭北,我們會在接下來的三章詳細闡述扳炬。

可擴展的MySQL

在此將展示如何構(gòu)建-一個 基于MySQL的應用,并且當規(guī)模變得越來越龐大時搔体,還能保證快速恨樟、高效并且經(jīng)濟。有些應用僅僅適用于--臺或少數(shù)幾臺服務器疚俱,那么哪些可擴展性建議是和這些應用相關的呢?大多數(shù)人從不會維護超大規(guī)模的系統(tǒng)厌杜,井且通常也無法效仿在主流大公司所使用的策略。本章會涵蓋這- - 系列的策略计螺。我們已經(jīng)建立或者協(xié)助建立了許多應用夯尽,包括從單臺或少量服務器的應用到使用上千臺服務器的應用。選擇一個合適的策略能夠大大地節(jié)約時間和金錢登馒。MySQL經(jīng)常被批評很難進行擴展匙握,有些情況下這種看法是正確的,但如果選擇正確的架構(gòu)并很好地實現(xiàn)陈轿,就能夠非常好地擴展MySQL.但是擴展性并不是-一個很好理解的主題圈纺,所以我們先來理清- -些容易混淆的地方。

云端的MySQL

應用層優(yōu)化

如果在提高MySQL的性能上花費太多時間麦射,容易使視野局限于MySQL本身蛾娶,而忽略了用戶體驗∏鼻铮回過頭來看蛔琅,也許可以意識到,或許MySQL已經(jīng)足夠優(yōu)化峻呛,對于用戶看到的響應時間而言罗售,其所占的比重已經(jīng)非常之小,此時應該關注下其他部分了钩述。這是個很不錯的觀點寨躁,尤其是對DBA而言,這是很值得去做的正確的事牙勘。但如果不是MySQL职恳,那又是什么導致了問題呢?使用第3章提到的技術(shù),通過測量可以快速而準確地給出答案方面。如果能順著應用的邏輯過程從頭到尾來剖析放钦,那么找到問題的源頭一般來說并不困難。有時葡幸,盡管問題在MySQL.上最筒,也很容易在系統(tǒng)的另一部分得到解決。

備份和恢復

如果沒有提前做好備份規(guī)劃蔚叨,也許以后會發(fā)現(xiàn)已經(jīng)錯失了- -些最佳的選擇床蜘。例如辙培,在服務器已經(jīng)配置好以后豁跑,才想起應該使用LVM罗岖,以便可以獲取文件系統(tǒng)的快照一但這時已經(jīng)太遲了。在為備份配置系統(tǒng)參數(shù)時怕享,可能沒有注意到某些系統(tǒng)配置對性能有著重要影響丹擎。如果沒有計劃做定期的恢復演練尾抑,當真的需要恢復時,就會發(fā)現(xiàn)并沒有那么順利蒂培。

MySQL用戶工具

MySQL服務器發(fā)行包中并沒有包含針對許多常用任務的工具再愈,例如監(jiān)控服務器或比較不同服務器間數(shù)據(jù)的工具。幸運的是护戳,Oracle 的商業(yè)版提供了- -些擴展工具翎冲,并且MySQL活躍的開源社區(qū)和第三方公司也提供了- -系列的工具,降低了自己“重復發(fā)明輪子”的需要媳荒。

總目錄

轉(zhuǎn)發(fā)+關注后留意私信點擊此處即可領取!即可免費領取史上最全MySQL實戰(zhàn)文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抗悍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钳枕,更是在濱河造成了極大的恐慌缴渊,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鱼炒,死亡現(xiàn)場離奇詭異衔沼,居然都是意外死亡,警方通過查閱死者的電腦和手機田柔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門俐巴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硬爆,你說我怎么就攤上這事∏骛” “怎么了缀磕?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長劣光。 經(jīng)常有香客問我袜蚕,道長,這世上最難降的妖魔是什么绢涡? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任牲剃,我火速辦了婚禮,結(jié)果婚禮上雄可,老公的妹妹穿的比我還像新娘凿傅。我一直安慰自己缠犀,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布聪舒。 她就那樣靜靜地躺著辨液,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箱残。 梳的紋絲不亂的頭發(fā)上滔迈,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音被辑,去河邊找鬼燎悍。 笑死,一個胖子當著我的面吹牛盼理,可吹牛的內(nèi)容都是我干的谈山。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼榜揖,長吁一口氣:“原來是場噩夢啊……” “哼勾哩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起举哟,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤思劳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后妨猩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潜叛,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年壶硅,在試婚紗的時候發(fā)現(xiàn)自己被綠了威兜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡庐椒,死狀恐怖椒舵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情约谈,我是刑警寧澤笔宿,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站棱诱,受9級特大地震影響泼橘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迈勋,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一炬灭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧靡菇,春花似錦重归、人聲如沸米愿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吗货。三九已至,卻和暖如春狈网,著一層夾襖步出監(jiān)牢的瞬間宙搬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工拓哺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勇垛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓士鸥,卻偏偏與公主長得像闲孤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烤礁,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容