久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中優化的方法

165次閱讀
沒有評論

共計 2770 個字符,預計需要花費 7 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章主要介紹 MySQL 中優化的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

優化方向 SQL 優化

sql 優化分析

索引優化

優化數據庫對象

優化表的數據類型

表拆分(水平、垂直)

反范式

使用中間表

優化 mysql server

mysql 內存管理優化

log 機制及優化

調整 mysql 并發參數

應用優化

數據庫連接池

使用緩存減少壓力

負載均衡建立集群

主主同步、主從復制

Mysql 優化問題分析定位分析 SQL 執行頻率

show status
例如:分析讀為主,還是寫為主 

定位執行效率低的 SQl

 慢查詢日志定位 -log-slow-queries = xxx(指定文件名)SHOW PROCESSLIST 查看當前正在進行的線程,包括線程狀態、是否鎖表 

分析 SQL 執行計劃

explain  your sql desc  your sql -  部分參數分析
select_type: SIMPLE  簡單表,不使用表連接或子查詢 PRIMARY  主查詢,即外層的查詢 UNION SUBQUER  子查詢的第一個 select
type: ALL  全表掃描
index  索引全掃描
range  索引范圍掃描
ref  使用非唯一索引或唯一索引的前綴掃描
eq_ref  類似 ref,使用的索引是唯一索引 const/system  單表中最多有一個匹配行 NULL  不用訪問表或者索引,直接得到結果 

show profile 分析 SQL

select @@have_profiling  是否支持
select @@profiling  是否開啟
執行   your sql show profiles 
show profile block io for QUERY 17

索引優化索引的存儲分類

B-TREE 索引:常見,大部分都支持 HASH 索引:只有 memory 引擎支持 R -TREE 索引:空間索引是 MyISAM 的一個特殊索引類型,主要用于地理空間數據類型
full-text 索引:全文索引,MyISAM 的一個特殊索引類型,innodb 從 5.6 開始支持 

索引的創建與刪除

 添加索引 ALTER Table `table_name` ADD PRIMARY KEY(`column`)ALTER Table `table_name` ADD UNIQUE(`column`)ALTER Table `table_name` ADD INDEX(`column`)ALTER Table `table_name` ADD FULLTEXT(`column`)刪除 ALTER Table `table_name` drop index index_name

Mysql 中能使用索引的情況

 匹配全值
匹配值范圍查詢
匹配最左前綴
僅僅對索引進行查詢(覆蓋查詢)匹配列前綴  (添加前綴索引)部分精確 + 部分范圍 

不能使用索引的場景

 以 % 開關的 like 查詢
數據類型出現隱式轉換
復合索引查詢條件不包含最左部分
使用索引仍比全表掃描慢
用 or 分割開的條件 

mysql 語句優化定期優化表

optimize table table_name  合并表空間碎片,對 MyISAM、BDB、INNODB 有效
如果提示不支持,可以用  mysql --skip-new  或者  mysql --safe-mode  來重啟,以便讓其他引擎支持 

常用優化

 盡量避免全表掃描,對 where 及 orderby 的列建立索引
盡量避免 where 使用  !=  或   盡量避免 where 子句用  or  連接條件
亂用 % 導致全表掃描
盡量避免 where 子句對字段進行表達式操作
盡量避免 where 子句對字段進行函數操作
覆蓋查詢,返回需要的字段
優化嵌套查詢,關聯查詢優于子查詢
組合索引或復合索引,最左索引原則
用 exist 代替 in 當索引列有大量重復數據時,SQL 查詢可能不會去利用索引 

優化數據庫對象優化表數據類型

PROCEDURE ANALYSE (16,256)  排除多于 16 個,大于 256 字節的 ENUM 建議 your sql  PROCEDURE ANALYSE ()

表拆分

 垂直拆分
針對某些列常用、不常用
表中的數據有獨立性,能簡單分類
需要在表存放多種介質 

反范式

 增加冗余列、增加派生列、重新組表和分割表 

使用中間表

 數據查詢量大
數據統計、分析場景 

Mysql 引擎比較 mysql 有什么引擎?

MySQL 中優化的方法

關于表引擎的命令

show engines;  查看 myql 所支持的存儲引擎
show variables like  %storage_engine   查看 mysql 默認的存儲引擎
show create table table_name  查看具體表使用的存儲引擎 

關于 innodb

1.  提供事務、回滾、系統奔潰修復能力、多版本并發控制事務 2.  支持自增列 3.  支持外鍵 4.  支持事務以及事務相關聯功能 5.  支持 mvcc 的行級鎖 

關于 MyISAM

1.  不支持事務、不支持行級鎖,只支持并發插入的表鎖,主要用于高負載的 select2.  支持三種不同的存儲結構:靜態、動態、壓縮 

調整參數優化 mysql 后臺服務 MyISAM 內存優化

# 修改相應服務器位置的配置文件  my.cnf
key_buffer_size
決定 myisam 索引塊緩存區的大小,直接影響表的存取效率,建議 1 / 4 可用內存
read_buffer  讀緩存
write_buffer  寫緩存 

InnoDB 內存優化

innodb_buffer_pool_size  存儲引擎表數據和索引數據的最大緩存區大小
innodb_old_blocks_pct LRU 算法   決定 old sublist 的比例
innodb_old_blocks_time LRU 算法   數據轉移間隔時間 

mysql 并發參數

max_connections  最大連接數,默認 151back_log  短時間內處理大量連接,可適當增大
table_open_cache  控制所有 SQL 執行線程可打開表緩存的數量,受其他參數制約
thread_cache_size  控制緩存客戶服務線程數量,加快數據庫連接速度,根據 threads_created/connections 來衡量是否合適
innodb_lock_wait_timeout  控制事務等待行鎖時間,默認 50ms

Mysql 應用優化介紹為什么要做應用優化

數據的重要性

mysql 服務及自身性能瓶頸

保證大型系統穩定可靠運行

應用優化方法

使用連接池

減少對 mysql 的真實連接
a. 避免相同數據重復執行(查詢緩存)
b. 使用 mysql 緩存(sql 緩存)

負載均衡
a. LVS 分布式
b. 讀寫分離(主主復制、主從復制保證數據一致性)

以上是“MySQL 中優化的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計2770字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宽城| 肇庆市| 栾城县| 葫芦岛市| 金沙县| 绥芬河市| 乐安县| 临海市| 浮梁县| 滕州市| 鄄城县| 三门县| 会泽县| 博爱县| 孟村| 明溪县| 伽师县| 宜昌市| 左云县| 上饶市| 大理市| 桦甸市| 丽水市| 鹿邑县| 丰都县| 镇坪县| 维西| 抚宁县| 阿鲁科尔沁旗| 临清市| 恩平市| 祁阳县| 天全县| 巴东县| 方正县| 松原市| 宁陕县| 怀远县| 阿合奇县| 遵义市| 界首市|