91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中優化的方法

發布時間:2020-12-17 10:01:22 來源:億速云 閱讀:155 作者:小新 欄目:MySQL數據庫

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

優化方向

SQL優化
  1. sql優化分析

  2. 索引優化

優化數據庫對象
  1. 優化表的數據類型

  2. 表拆分(水平、垂直)

  3. 反范式

  4. 使用中間表

優化 mysql server
  1. mysql內存管理優化

  2. log機制及優化

  3. 調整mysql并發參數

應用優化
  1. 數據庫連接池

  2. 使用緩存減少壓力

  3. 負載均衡建立集群

  4. 主主同步、主從復制

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服務及自身性能瓶頸

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

應用優化方法
  1. 使用連接池

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石台县| 三门县| 青川县| 台南市| 广昌县| 青龙| 宁远县| 孙吴县| 富顺县| 双鸭山市| 武功县| 德惠市| 怀集县| 商洛市| 天长市| 襄城县| 马山县| 中江县| 噶尔县| 青铜峡市| 嫩江县| 紫云| 沧源| 渭南市| 申扎县| 麻江县| 从江县| 成武县| 彰武县| 湾仔区| 平昌县| 资溪县| 台江县| 龙岩市| 丘北县| 淄博市| 泸水县| 蛟河市| 广东省| 鄯善县| 沽源县|