MySQL優化 ----開篇

今天,數據庫的操做愈來愈成爲整個應用的性能瓶頸,Mysql優化則是一個常常要談的問題了。html

談起MySQL優化,我們先簡單談一下Mysql:sql

Mysql是最流行的關係型數據庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。數據庫

什麼是數據庫?

數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,編程

每一個數據庫都有一個或多個不一樣的API用於建立,訪問,管理,搜索和複製所保存的數據。緩存

咱們也能夠將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢。安全

因此,如今咱們使用關係型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關係型數據庫,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。服務器

RDBMS即關係數據庫管理系統(Relational Database Management System)的特色:數據結構

  • 1.數據以表格的形式出現
  • 2.每行爲各類記錄名稱
  • 3.每列爲記錄名稱所對應的數據域
  • 4.許多的行和列組成一張表單
  • 5.若干的表單組成database

    RDBMS 術語

     

    在咱們開始學習MySQL 數據庫前,讓咱們先了解下RDBMS的一些術語:架構

    • 數據庫: 數據庫是一些關聯表的集合。.
    • 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。
    • 列: 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。
    • 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。
    • 冗餘:存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性。
    • 主鍵:主鍵是惟一的。一個數據表中只能包含一個主鍵。你可使用主鍵來查詢數據。
    • 外鍵:外鍵用於關聯兩個表。
    • 複合鍵:複合鍵(組合鍵)將多個列做爲一個索引鍵,通常用於複合索引。
    • 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。相似於書籍的目錄。
    • 參照完整性: 參照的完整性要求關係中不容許引用不存在的實體。與實體完整性是關係模型必須知足的完整性約束條件,目的是保證數據的一致性。

      Mysql數據庫

      MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。負載均衡

      • Mysql是開源的,因此你不須要支付額外的費用。
      • Mysql支持大型的數據庫。能夠處理擁有上千萬條記錄的大型數據庫。
      • MySQL使用標準的SQL數據語言形式。
      • Mysql能夠容許於多個系統上,而且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
      • Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。
      • MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件爲8TB。
      • Mysql是能夠定製的,採用了GPL協議,你能夠修改源碼來開發本身的Mysql系統。

          把數據庫和Mysql瞭解以後,我們開始正經的講Mysql的優化,咱們從四個方向來說Mysql優化:

(一)、MySQL表設計層面優化:結構, 字段類型, 是否知足範式, 選擇那種存儲引擎.

   (二)、MySQL數據庫功能層面:是否使用索引, 如何用索引? 是否分區分表? 是否使用內部緩存?

    ( 三)、MySQL數據庫服務器架構層面:是否讀寫分離? 是否負載均衡?

   (四)、業務邏輯層面:SQL, 完成一個功能要使用什麼樣的SQL?

相關文章
相關標籤/搜索