溫馨提示×

溫馨提示×

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

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

什么是MYSQL的開發思路

發布時間:2021-10-25 10:33:21 來源:億速云 閱讀:130 作者:柒染 欄目:大數據

今天就跟大家聊聊有關什么是MYSQL的開發思路,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

昨天運維的親,來找我,要統計一個事情,具體的情況是這樣,要判斷某臺機器中的的 priority 為 1 的數據在 900秒內,并且計數,如果這樣的情況超過1 條,則報警, 并且還有一個情況,就算900秒內  priority的等于1 的只有1條,但priority 可能為 2 3 4 5 6 的只要有任意一條,就報警。

下面就是這樣的一個語句,寫的是沒有問題的,這位同學之前是ORACLE 的DBA。問我有什么好的方法來改善目前數據查詢性能不好的情況。

SELECT

s.DeviceReportedTime, #統計報告時間

s.Priority, #優先級,有6種,均是數字1-6

s.FromHost, #主機IP

s.Message #告警信息

FROM

SystemEvents s  #假設有五千萬數據,時間有索引

WHERE

s.FromHost = '10.50.131.1'

AND s.Priority = 1

AND s.DeviceReportedTime > DATE_SUB(NOW(), INTERVAL 900 SECOND)

AND EXISTS (

SELECT

1

FROM

SystemEvents se

WHERE

se.DeviceReportedTime > DATE_SUB(NOW(), INTERVAL 900 SECOND)

AND se.FromHost = '10.50.131.1'

HAVING

COUNT(1) >= 2

);

首先我們從邏輯上來,MYSQL 的從來都是要將復雜的事情,變得簡單。

上面的報警邏輯只有兩個總結

1  priority =1  的時候記錄超過1條

2  priority = 1 的時候還有其他priority 的記錄并行存在的情況也報警

簡單用SQL 來表達就是 

1 select count (*) from table where priority =1  (count(*) > 2)

2 select count(*)  from table where priority <> 1  +  select count(*) from table where priority = 1   > 1  

以上兩種情況就會報警

如果通過SQL SERVER ORACLE  PG 那用上面的語句類型來處理,是非常好的解決方法。

但MYSQL 則不是,MYSQL 編程或者提取數據的方式都是要 短 小 快的方式,這比較符合MYSQL的 數據庫使用的場景。

因為是要在ZABBIX 中進行計算,最終給出的方案為

1  將上面的SQL 拆分

在ZABBIX 報警由一條 變為兩條

報警

select count (*) from table where

FromHost = '10.50.131.1'

AND Priority = 1

AND DeviceReportedTime > DATE_SUB(NOW(), INTERVAL 900)

select count(*)  from table

where

FromHost = '10.50.131.1'

AND Priority <> 1

AND DeviceReportedTime > DATE_SUB(NOW(), INTERVAL 900)

在通過腳本,判斷 兩條語句如果 語句1 > 1 報警

                                                  語句 1 在 = 1 情況下 語句2 >1 就報警

                                                  語句1  = 0 則不報警

將上面的復雜的SQL 變為語句 +  腳本的方式來處理

這也是 MYSQL 在使用中的一個思路,千萬別把MYSQL 當 ORALCE 時候用 ,任何的 長SQL  都往上堆,那絕對是在給未來 找 麻煩。

看完上述內容,你們對什么是MYSQL的開發思路有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女