日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论

發布時間:2025/3/12 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql的邏輯分層:連接層 服務層 引擎層 存儲層

引擎層主要分為兩類:InnoDB、MyIsam(使用show engines;查看)

InnoDB是事務優先的,會進行行鎖,適合高并發操作

MyIsam是性能優先的,進行表鎖

sql優化點:等待時間長,執行時間長,性能低下,多表連接查詢,服務器參數設置不合理(線程數、緩沖區)

編寫過程 select ... from ... join... on ... where ... group by ... having... order by...

解析過程 from ... on ... join... where ...group by... having...select... order by...

具體內容可以看步步深入:MySQL架構總覽->查詢執行流程->SQL解析順序 - AnnsShadoW - 博客園?www.cnblogs.com

sql優化主要是優化索引,索引是一個高效查詢數據的數據結構,索引一般是一顆樹(樹:b樹或者hash樹等)示例如下。

索引的弊端也是有的:索引本身需要空間可以存放內存或者硬盤內部;索引在有的情況下不適用:數據量少,頻繁更新的數據,很少使用的字段,索引會提高查詢但是減低增刪改效率(但是數據庫的大部分操作是查詢,增刪改較少)。

優勢:提高查詢效率(降低IO使用率)、降低CPU使用率(...order by xx desc,直接在B樹排好了)。

B樹在磁盤中的結構是怎么樣的呢?

三層Btree可以存放上百萬條數據,每一層可以超過兩個分支。B樹一般是值B+樹,數據全部放到葉節點中,B+樹中查詢任意數據都是n次(n為樹的高度)。

B樹與B+樹的區別,可以看以下文章https://blog.csdn.net/login_sonata/article/details/75268075?blog.csdn.net

索引的分類:單值索引(單列,一個表可以有多個單值索引)、唯一索引(不能重復)、復合索引(多個列構成的索引,符合索引不一定是多個列全中)。

第一種

# 單值索引 create 索引類型 索引名 on 表(字段)

create index dept_index on tb(dept);

# 唯一索引

create unique index name_index on tb(name);

# 復合索引

create index dept_name_index on tb(dept, name);

第二種

# alter table 表名 索引類型 索引名(字段)

# 單值索引

alter table tb add index dept_index(dept);

# 唯一索引

alter table tb add unique index name_index(name);

# 符合索引

alter table tb add index dept_name_index(dept, name);

事務操作只對DML增刪改有效,DDL會自動提交。

主鍵索引是唯一索引的一種,但是主鍵索引不能為null。

刪除索引

drop index 索引名 on 表名

drop index name_index on tb;

SQL優化問題

1、分析SQL的執行計劃:explain。可以模擬SQL優化器優化SQL執行語句。

2、mysql查詢自動優化,會干擾優化。

explain一般返回這么幾個字段:id,select_type,type

不過SQL執行計劃不同版本不一樣,看具體版本,不用糾結。

這里用explain返回結果時,id越大越先執行(本質是嵌套查詢),id相同時,順序執行。

select_type:primary(主查詢)、subquery(子查詢)、simple(簡單查詢,不包含子查詢和union)、derived(衍生查詢,用到了臨時表。在from子查詢中只有一張表,或者union前一個查詢)

type:索引類型

一般system > const > eq_ref > ref > range > index > all性能依次降低,實際能達到ref > range即可。前提是必須建立索引。

這個理解即可。

eq_ref:查詢結果1v1;ref:查詢結果1vN(N>=0);range(where between,<=, >=,in等),其中in在查詢數據在一半以上時,退化為all或index。盡量避免使用in;index:查某一索引字段的;all:全表所有字段或者沒有索引的字段。

下期講索引優化方案。

總結

以上是生活随笔為你收集整理的数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。