今天,數據庫的操做愈來愈成爲整個應用的性能瓶頸,Mysql優化則是一個常常要談的問題了。html
談起MySQL優化,我們先簡單談一下Mysql:sql
Mysql是最流行的關係型數據庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。數據庫
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,編程
每一個數據庫都有一個或多個不一樣的API用於建立,訪問,管理,搜索和複製所保存的數據。緩存
咱們也能夠將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢。安全
因此,如今咱們使用關係型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關係型數據庫,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。服務器
RDBMS即關係數據庫管理系統(Relational Database Management System)的特色:數據結構
在咱們開始學習MySQL 數據庫前,讓咱們先了解下RDBMS的一些術語:架構
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。負載均衡
把數據庫和Mysql瞭解以後,我們開始正經的講Mysql的優化,咱們從四個方向來說Mysql優化:
(一)、MySQL表設計層面優化:結構, 字段類型, 是否知足範式, 選擇那種存儲引擎.
(二)、MySQL數據庫功能層面:是否使用索引, 如何用索引? 是否分區分表? 是否使用內部緩存?
( 三)、MySQL數據庫服務器架構層面:是否讀寫分離? 是否負載均衡?
(四)、業務邏輯層面:SQL, 完成一個功能要使用什麼樣的SQL?