當前位置:首頁 » 編程語言 » Sql多久才算慢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

Sql多久才算慢

發布時間: 2023-06-19 10:10:58

『壹』 美團面試題:慢sql有遇到過嗎是怎麼解決的

大家好,我是田維常,可以叫我老田,也可以叫我田哥

。2017年的時候,我剛去上海,朋友內悄指早推我去美團面試,之前我也寫過一個一篇文章,也是在美團面試中遇到的:

美團面試題:String s = new String("111")會創建幾個對象?

關於慢SQL,我和面試官扯了很久,面試官也是很謙虛的,總是點頭,自己以為回答的還可以。最後的最後,還是說了「 你先回去等通知吧! 」。

所以,我決定把這個慢SQL技術點,好好和你分享分享。希望你下次在遇到類似的面試,能順順利利輕輕鬆鬆的斬獲自己想要的offer。

MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄MySQL中查詢時間超過(大於)設置閾值(long_query_time)的語句,記錄到慢查詢日誌中。

其中,long_query_time的默認值是10,單位是秒,也就是說默認情況下,你的SQL查詢時間超過10秒就算慢SQL了。

在MySQL中,慢SQL日誌默認是未開啟的,也就說就算出現了慢SQL,也不會告訴你的,如果需要知道哪些SQL是慢SQL,需要我們手動開啟慢SQL日誌的。

關於慢SQL是否開啟,我們可以通過下面這個命令來查看:

在這里插入圖片描述

通過命令,我們就可以看到slow_query_log項為OFF,說明我們的慢SQL日誌並未開啟。另外我們也可以看到我們慢SQL日誌存放於哪個目錄下和日誌文件名。

下面我們來開啟慢SQL日誌,執行下面的命令:

這里需要注意,這里開啟的是我們當前的資料庫,並且,我們重啟資料庫後會失效的。

開啟慢SQL日誌後,再次查看:


slow_query_log項已經變成ON,說明開啟成功。

上面說過慢SQL默認時間是10秒,我們通過下面的命令就可以看到我們慢SQL的默認時間:

在這里插入圖片描述

我們總不能一直使用這個默認值,可能很多業務需要時間更短或更長,所以此時,我們就需要對默認時間進行修改,修改命令如下:

修改完了,我們再來看看是否已經改成了3秒。


這里需要注意:想要永久的生效,還需要修改MySQL下面的配置文件my.cnf 文件。

注意:不同操作系統,配置有些區別。

Linux操作系統中

Windows操作系統中

執行一條慢SQL,因為我們前面已經設置好了慢SQL時間為3秒,所以,我們只要執行一條SQL時間超過3秒即可。


該SQL耗時4.024秒,下面我們就來查看慢SQL出現了多少條。

使用命令:


找到慢SQL日誌文件,打開後就會出現類似下面這樣的語句;

簡單說明:

切記

通常我們定位慢SQL有兩種方式:

第一種:定位慢查詢 SQL 可以通過兩個表象進行判斷

第二種:根據不同的資料庫使用不同的方式獲取問題 SQL

如果開啟了慢SQL日誌後,可能會有大量的慢SQL日誌產生,此時再用肉眼看,那是不太現實的,所以大佬們就給我搞了個工具: mysqlmpslow 。

mysqlmpslow 能將相同的慢SQL歸類,並統計出相同的SQL執行的次數,每次執行耗時多久、總耗時,每次返回的行數、總行數,以及客戶端連接信息等。

通過命令

可以看到相關參數的說明:

比較常用的參數有這么幾個:

mysqlmpslow 常用的使用逗慶方式如下:

如上一條命令,應該是mysqlmpslow最簡單的一種形式,其中-s參數是以什麼方式排序的意思,c指代的是以總數從大到小的方式排序。-s的常用子參數有:c: 相同查詢以查詢條數和從大到小排序。t: 以查詢總時間的方式從大到小排序。l: 以查詢鎖的總時間的方式從大到小排序。at: 以查詢平均時間的方式從大到小排序。al: 以查詢鎖平均時間的方式從大到啟雀小排序。

同樣的,還可以增加其他參數,實際使用的時候,按照自己的情況來。

其他常用方式:

接下,我們來個實際操作。

這其中的 SQL 語句因為涉及某些信息,所以我都用*號將主體替換了,如果希望得到具體的值,使用-a參數。

使用 mysqlmpslow 查詢出來的摘要信息,包含了這些內容:

Count : 464 :表示慢查詢日誌總共記錄到這條sql語句執行的次數;

Time=18.35s (8515s) :18.35s表示平均執行時間(-s at),8515s表示總的執行時間(-s t);

Lock=0.01s (3s) :與上面的Time相同,第一個表示平均鎖定時間(-s al),括弧內的表示總的鎖定時間(-s l)(也有另一種說法,說是表示的等待鎖釋放的時間);

Rows=90884.0 (42170176) : 第一個值表示掃描的平均行數(-s ar),括弧內的值表示掃描的總行數(-s r)。

是不是

so easy!!!!

『貳』 零基礎學sql要多久

零基礎學sql大約需要3-5個月的時間。

SQL全稱是 Structured Query Language,翻譯後就是結構化查詢語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。那麼什麼是資料庫呢?簡而言之就是存儲數據的倉庫,Excel為什麼不算資料庫呢,因其能夠存儲的數據量真的太小了,Excel2016最多存儲104萬條數據。現在大數據時代數據動輒百萬、千萬,所以需要資料庫來幫忙。SQL的能力分為入門,實戰兩個階段,具體看面試的崗位要求的水平。一般SQL分為增,刪,改,查四大能力。很多人都以為按這個順序應該先寫增,刪,改,但其實往往工作中真正用到的是查。SQL很通用,隨便找一本教程都會講這東西,網上也很多,根本不用挑選。學習的重點要放在理解結構化數據的概念和運算,而不是SQL的語法。理解那些基礎知識後,語法本身就不是個事。

想了解更多sql相關詳情,推薦咨詢達內教育。達內教育具有豐厚的師資力量,優秀的教學體系,教學質量突出。理論知識+學習思維+實戰操作,打造完整學習閉環。實戰講師,經驗豐富。達內教育獨創TTS8.0教學系統,並設有企業雙選會。達內的OMO教學模式,全新升級,線上線下交互學習,直播學,隨時學,隨時問,反復學,學習安排更便捷。【想要了解更多信息,歡迎點擊咨詢達內教育!】

『叄』 SQL 語句執行感覺很慢,怎麼回事

到這個數量級的全部更新,肯定會很慢。
第一。你的記錄不一定在同一個partition,
第二。不明白為什麼那麼多人建議你建索引,你建的索引越多,你的更新速度越慢,因為你更新記錄的同時,還有更新索引。
第三。你必須知道更新速度慢的瓶頸在哪裡。是讀寫太多,還是內存不夠,還是CUP不夠快,然後對症下葯。

下面介紹兩個簡單的辦法,也許有效:
第一:
把這個100W行的表縱向劈成兩個,用外鍵關系連接,一個裝小的,經常改變的數據比如ID,外鍵,狀態值,時間等,另一個裝大的,不經常改變的數據,比如很長的字元串,xml,text 等。
這樣更新時操作小的這個表,可以大大節約內存和CPU 開銷,降低磁碟操作。
壞處就是查詢時會慢些。
第二:
把這100W行橫向切成很多個表,比如每個月的記錄裝在一個表裡,這樣每個表的記錄數可能只有幾萬,查詢,更新都會快很多。
壞處是查詢,更新都不如原來好寫。

『肆』 sql使用時間查詢非常緩慢,為什麼

你用什麼類型資料庫?orcl還是sqlserver?查詢緩慢也有很多原因,不僅是你的查詢語句問題,有時候和你硬體也有關系。select XXXX from dbo.tab_name where Test_Time between '2015-03-23 11:34:27' and '2015-03-26 11:34:27' 時間是字元串,是沒有問題的,不用轉類型,即使你的欄位是DateTime類型

『伍』 sql運行慢

這種問題很復雜的,一般是按照先軟後硬的原則 ,建議你 :
1.排除系統上是否有病毒,關掉不使用的埠,安全補丁打全!,建立查詢的時候查看內存,CPU的使用情況.
2.經常查詢的表是否建立索引,SQL語句查詢的條件欄位是否建有索引,優化SQL查詢語句。
3.檢查網路是否正常。
4.機器硬體是否需要升級,例如:增加一根內存或使用配置更好的機器。

『陸』 一般mysql超過多長時間,會被認為是慢查詢

肯定影響的。

常見查詢慢的原因常見的話會有如下幾種:
1、沒有索引或沒有用到索引。
PS:索引用來快速地尋找那些具有特定值的記錄,所有MySQL索引都以B-樹的形式保存。如果沒有索引,執行查詢時MySQL必須從第一個記錄開始掃描整個表 的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜索條件的列上已經創建了索引,MySQL無需掃描任何記錄 即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查找記錄至少要比順序掃描記錄快100倍。
索引類型:
普通索引:這是最基本的索引類型,沒唯一性之類的限制。
唯一性索引:和普通索引基本相同,但所有的索引列只能出現一次,保持唯一性。
主鍵:主鍵是一種唯一索引,但必須指定為"PRIMARY KEY"。
全文索引:MYSQL從3.23.23開始支持全文索引和全文檢索。在MYSQL中,全文索引的索引類型為FULLTEXT。全文索引可以在VARCHAR或者TEXT類型的列上創建。
2、IO吞吐量小形成了瓶頸。
PS:這是從系統層來分析MYSQL是比較耗IO的。一般資料庫監控也是比較關注IO。
監控命令:$iostat -d -k 1 10
參數 -d 表示,顯示設備(磁碟)使用狀態;-k某些使用block為單位的列強制使用Kilobytes為單位;1 10表示,數據顯示每隔1秒刷新一次,共顯示10次。

『柒』 SQL難學嗎自學的話大概要多長時間

SQL如果有老師教的話一個星期就能上手,但要學好一年二年不算長,關鍵看你做什麼應用,做資料庫維護,那就要學精,要很長時間的學習與實踐;如果只是存數據來開發應用程序,那把:庫、表、行、列弄清楚,就可以用。自學花的時間會長點,不過不會很難。照著學沒有問題。

SQL學習多久,覺得看學員基礎情況。1、如果原來什麼語言也沒有學過,也沒有基礎,那最基礎的要先選擇一種語言來學習,是VB,C..,pascal,看個人的喜好,一般情況下,選擇C語言來學習2、如果是有過語言的學習,看應該一個星期差不多,因為語言的理念互通的,只是所用的命令有所不一樣。3、以前用過其它資料庫管理,那應該兩天就可以,主要熟悉界面和管理,其它的沒什麼變化。

想了解更多有關編程語言的詳情,推薦選擇【達內教育】。該機構具有豐厚的師資力量,優秀的教學體系,教學質量突出,實戰講師,經驗豐富,理論知識+學習思維+實戰操作,打造完整學習閉環。達內教育獨創TTS8.0教學系統,並設有企業雙選會。達內的OMO教學模式,全新升級,線上線下交互學習,直播學,隨時學,隨時問,反復學,學習安排更便捷。→感興趣的話點擊此處,免費學習一下

『捌』 sql語句查詢速度是1分鍾慢嗎

這樣的時間程序是有問題了,你這條sql執行需要一分鍾,前台就得等一分鍾,沒有用戶會願意等,現在查詢時間都是毫秒級別的,如果查詢時間實在減不下來,可以做緩存,或者索引