## 一、什么是數據的優化
數據庫的優化是一個綜合型的技術,并不是通過某一種方式讓數據庫效率提高很多, 而使通過多方便的提高,從而使數據提高很多
主要包括
1. 表的設計合理化
2. SQL語句的優化
3. 給表要添加合適的索引 普通索引、主鍵所以,唯一索引 unique、全文索引
4. 分表技術(水平分割、垂直分割)
5. 定時清除垃圾數據、定時進行碎片整理
6. 多用存儲過程,和觸發器
7. 對mysql的配置進行優化[配置最大并發數my.ini,調整緩存大小]
8. 讀寫分離
9. myql服務器硬件是否要升級
### 表的設計合理化
三范式:
第一范式、
確保每列的原子性、所有的(不可再分)
注意:地址這個字段,如果不分類匯總,不排序,僅僅是起一個字符串的作用,這是我們不拆分(反三范式)
第二范式、
非鍵字段必須依賴與鍵字段(一個表做一件事情)
第三范式、
消除傳遞依賴(如果一個字段可以推到出到另外一個字段)
反三范式:
范式越高,數據的冗余就越少、但是有的時候效率就越底下,為了提高運行效率,可以適當
的適當的讓數據的冗余。
數據庫的性能比規范化更重要
### SQL語句的優化
#### 定位慢查詢
增、刪、改、查
### 一、MySql數據庫一個關于狀態的查詢
show status指令 查詢mysql的運行狀態
show status like ‘com_insert’ 執行了多少次插入
show status like ‘com_update’ 執行了多少次更新
show status like ‘com_delete’ 執行了多少次刪除
show status like ‘com_select’ 執行了多少次刪除
show[session | global ] status like com_select’
show status like ''uptime' 顯示MySql數據庫啟動多長時間,如果時間很長了,
數據庫表的存儲引擎是myisan的,這時候就要主要整理碎片。
### 二、顯示慢查詢
show variables like 'long_query_time'
set long_query_time = 0.5
show status like 'slow_queries'
定位慢查詢(開啟慢查詢的日志)
一旦開啟慢查詢日志后,日志文件的位置,在my.ini文件去查找datadir
在默認情況下不會開啟慢查詢,如何開啟慢查詢呢
第一步: 關閉當前的MySql的服務
第二步: 啟動 mysqld --safe -mode --slow-query-log
關閉 mysqladmin -uroot -p123456 shut down
#### 優化問題
通過explain語句可以分析,mysql如何執行的sql語句