高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

在互聯網行業,MySQL數據庫毫無疑問已經是最常用的數據庫,LAMP (Linux +Apache + MySQL + PHP)甚至已經成為專有名詞,也是很多中小網站建站的首選技術架構。

MySQL有哪些特性?

  1. 使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性
  2. 支持AIX、FreeBSD、HP-UX、Linux、MacOS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統
  3. 為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  4. 支持多線程,充分利用CPU資源
  5. 化的SQL查詢算法,有效地提高查詢速度
  6. 既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名
  7. 提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑
  8. 提供用於管理、檢查、優化數據庫操作的管理工具
  9. 可以處理擁有上千萬條記錄的大型數據庫

走進MySQL的世界

MySQL架構與歷史

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

和其他數據庫系統相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用併發揮好的作用,但同時也會帶來-點選擇上的困難。MySQL並不完美,卻足夠靈活,能夠適應高要求的環境,例如Web類應用。同時,MySQL既可以嵌入到應用程序中,也可以支持數據倉庫、內容索引和部署軟件、高可用的冗餘系統、在線事務處理系統(OLTP)等各種應用類型。

轉發+關注後留意私信回覆【架構書籍】即可免費領取史上最全MySQL實戰文檔

服務器性能剖析

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

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

查詢性能優化

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

前面是介紹瞭如何設計最優的庫表結構、如何建立最好的索引,這些對於高性能來說是必不可少的。但這些還不夠一還需 要合理的設計查詢。如果查詢寫得很糟糕,即使庫表結構再合理、索引再合適,也無法實現高性能。

MySQL高級特性

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

MySQL從5.0和5.1版本開始引入了很多高級特性,例如分區、觸發器等,這對有其他關係型數據庫使用背景的用戶來說可能並不陌生。這些新特性吸引了很多用戶開始使用MySQL。不過,這些特性的性能到底如何,還需要用戶真正使用過才能知道。這裡我們將為大家介紹,在真實的世界中,這些特性表現如何,而不是隻簡單地介紹參考手冊或者宜傳材料.上的數據。

轉發+關注後留意私信回覆【架構書籍】即可免費領取史上最全MySQL實戰文檔

優化服務器設置

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

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

最好是從理解MySQL內核和行為開始。然後可以利用這些知識來指導配置MySQL.最後,可以將想要的配置和當前配置進行比較,然後糾正重要並且有價值的不同之處。

轉發+關注後留意私信回覆【架構書籍】即可免費領取史上最全MySQL實戰文檔

複製

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

MySQL內建的複製功能是構建基於MySQL的大規模、高性能應用的基礎,這類應用使用所謂的“水平擴展”的架構。我們可以通過為服務器配置一個或多個備庫生1的方式來進行數據同步。複製功能不僅有利於構建高性能的應用,同時也是高可用性、可擴展性、災難恢復、備份以及數據倉庫等工作的基礎。事實上,可擴展性和高可用性通常是相關聯的話題,我們會在接下來的三章詳細闡述。

轉發+關注後留意私信回覆【架構書籍】即可免費領取史上最全MySQL實戰文檔

可擴展的MySQL

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

在此將展示如何構建-一個 基於MySQL的應用,並且當規模變得越來越龐大時,還能保證快速、高效並且經濟。有些應用僅僅適用於--臺或少數幾臺服務器,那麼哪些可擴展性建議是和這些應用相關的呢?大多數人從不會維護超大規模的系統,井且通常也無法效仿在主流大公司所使用的策略。本章會涵蓋這- - 系列的策略。我們已經建立或者協助建立了許多應用,包括從單臺或少量服務器的應用到使用上千臺服務器的應用。選擇一個合適的策略能夠大大地節約時間和金錢。MySQL經常被批評很難進行擴展,有些情況下這種看法是正確的,但如果選擇正確的架構並很好地實現,就能夠非常好地擴展MySQL.但是擴展性並不是-一個很好理解的主題,所以我們先來理清- -些容易混淆的地方。

轉發+關注後留意私信回覆【架構書籍】即可免費領取史上最全MySQL實戰文檔

雲端的MySQL

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析


高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

應用層優化

如果在提高MySQL的性能上花費太多時間,容易使視野侷限於MySQL本身,而忽略了用戶體驗。回過頭來看,也許可以意識到,或許MySQL已經足夠優化,對於用戶看到的響應時間而言,其所佔的比重已經非常之小,此時應該關注下其他部分了。這是個很不錯的觀點,尤其是對DBA而言,這是很值得去做的正確的事。但如果不是MySQL,那又是什麼導致了問題呢?使用第3章提到的技術,通過測量可以快速而準確地給出答案。如果能順著應用的邏輯過程從頭到尾來剖析,那麼找到問題的源頭一般來說並不困難。有時,儘管問題在MySQL.上,也很容易在系統的另一部分得到解決。

備份和恢復

如果沒有提前做好備份規劃,也許以後會發現已經錯失了- -些最佳的選擇。例如,在服務器已經配置好以後,才想起應該使用LVM,以便可以獲取文件系統的快照一但這時已經太遲了。在為備份配置系統參數時,可能沒有注意到某些系統配置對性能有著重要影響。如果沒有計劃做定期的恢復演練,當真的需要恢復時,就會發現並沒有那麼順利。

MySQL用戶工具

MySQL服務器發行包中並沒有包含針對許多常用任務的工具,例如監控服務器或比較不同服務器間數據的工具。幸運的是,Oracle 的商業版提供了- -些擴展工具,並且MySQL活躍的開源社區和第三方公司也提供了- -系列的工具,降低了自己“重複發明輪子”的需要。

總目錄

高可用+存儲+索引+查詢+複製+可擴展+優化:全網最全的MySQL剖析

資料過多就不一一展示了,需要的小夥伴請轉發+關注後私信小編回覆【架構書籍】即可免費領取MySQL實戰文檔和相關架構資料文檔!



分享到:


相關文章: