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

歡迎訪問 生活随笔!

生活随笔

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

数据库

怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

發布時間:2023/12/6 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、第一節:一條sql查詢語句是怎樣執行的

5.5.5版本以后,默認使用存儲引擎為InnoDB

不使用查詢緩存,MySQL8.0沒有查詢緩存這個功能

總體來說:MySQL分為service層和存儲引擎層

1)service層包括:連接器、分析器、優化器、執行器;它涵蓋了MySQL大多數核心服務功能,以及所有的內置函數(日期、時間、數學和加密函數),所有跨存儲引擎都在這一層實現(觸發器、存儲過程、視圖)

2)存儲引擎負責數據的存儲和提取,其架構模式是插件式的,包含:InnoDB、MyISAM、Memory等5.5.5版本以后,默認使用存儲引擎為InnoDB,選擇其他引擎可以在建表時進行選擇,不同的存儲引擎用的是同一個server層

mysql> select * from T where ID=10;

(1)連接器:建立連接、獲取權限、維持和管理連接

mysql -h$ip -P$port -u$user -p

如果通過則開始驗證權限:否則 access denied for user

建立連接之后,會保持連接,處于空閑的狀態,使用 show processlist 可以查看,如果長時間沒動靜,連接器會自己斷開,wait_timeout控制,默認為8小時,

長連接是如果連接過后,客戶端一直有請求,則一直使用同一個連接,短連接則是每次執行完很少的幾次查詢之后就斷開了,下次查詢再重新進行連接;

全使用長連接之后,會大量占用內存,導致oom,解決方案:定期斷開長連接,5.7版本之后,執行一個比較大的操作之后,使用mysql_reset_connection初始化連接資源

(2)查詢緩存:MySQL接收到查詢緩存之后,會先到緩存看是否執行過相同語句,擊中則返回,否則繼續往下

一般都不建議使用緩存,8.0之后直接拋棄了這一部分的功能,why?:

查詢緩存實效非常頻繁,只要對一個表有更新操作,該表的緩存就會被清空;query_cache_type 設置為DEMAND,這樣的sql語句都不使用緩存;如需使用,如下:

mysql> select SQL_CACHE * from T where ID=10;

(3)分析器:檢查語法,分析語句:

mysql> elect * from t where ID=1;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'elect * from t where ID=1' at line 1

注意near附近的提示查找到錯誤;

(4)優化器:當表有多個索引的時候,決定使用哪個索引,或者有多個表關聯的時候,決定各個表的連接順序

(5)執行器:當知道你需要做什么時,進入執行階段,開始執行語句:

mysql> elect * from t where ID=1;

開始執行時,還會判斷一下登錄用戶有沒有這張表的查詢權限 ,

慢數據中會看到rows_examined ,表示執行了多少次行掃描;

總結

以上是生活随笔為你收集整理的怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...的全部內容,希望文章能夠幫你解決所遇到的問題。

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