當前位置:首頁 » 編程語言 » sql熱點

sql熱點

發布時間: 2024-09-27 01:51:55

1. sql金融業務指標統計

金融業務指標的SQL統計藝術


信貸業務的脈絡,如同一座精密的鍾表,由貸前申請、貸中審批到貸後管理,每個環節都與數據緊密相連。關鍵的表單如授信記錄、模型輸出和借據表,它們是數據的中樞,驅動著業務指標的實時洞察。本文將通過SQL的魔力,深入解析這些表單,以滿足多樣化的統計需求。


數據驅動的決策基石



  • 核心數據表: 授信記錄,記錄用戶風險評估;模型輸出,映射用戶風險;借據表,揭示借款與還款情況。這三張表如同業務的骨骼,支撐著每個環節的數據追蹤。


統計需求全景

  • 申請與授信:洞察流量與批准效率。

  • 產品不良指標:在貸余額、不良率,衡量風險程度。

  • 逾期類型分布:揭示風險熱點和異常行為。

  • 用戶畫像:規則匹配情況,揭示用戶行為模式。

  • Vintage賬齡分析:評估資產風險的演變趨勢。


SQL查詢的藝術



  • 每日動態洞察: 通過SQL,計算平均核額(當日總授信金額/通過人數),並按日期動態追蹤五個關鍵指標,以及貸款余額、還款和逾期行為。

  • 產品指標精準計算: 在貸余額、余額不良率和客戶不良率,通過分組統計和匯總,揭示產品風險的全貌。

  • 逾期類型洞察: 通過窗口函數和標記逾期類型,計算逾期率,揭示風險分布的動態變化。

  • 用戶畫像解析: JSON_EXTRACT技術提取規則命中情況,多維度展現用戶行為特徵。

  • 賬齡分析深度解讀: 通過 Vintage 分析,每月末觀察貸款質量,計算逾期率,揭示資產健康度。


這些SQL查詢如同金融業務的智能引擎,將復雜的數據轉化為易於理解的指標,助力決策者在瞬息萬變的市場環境中保持敏銳的洞察力。當然,所有示例基於模擬數據,實際應用中可能需要根據具體業務場景進行調整。期待你的反饋,共同探討如何優化和擴展這些統計方法。

2. 如果sql語句已經達到優化,瓶頸在於數據文件的磁碟io,此時可以怎麼調整

具體問題具體分析,舉例來說明為什麼磁碟IO成瓶頸資料庫的性能急速下降了。

為什麼當磁碟IO成瓶頸之後, 資料庫的性能不是達到飽和的平衡狀態,而是急劇下降。為什麼資料庫的性能有非常明顯的分界點,原因是什麼?

相信大部分做資料庫運維的朋友,都遇到這種情況。 資料庫在前一天性能表現的相當穩定,資料庫的響應時間也很正常,但就在今天,在業務人員反饋業務流量沒有任何上升的情況下,資料庫的變得不穩定了,有時候一個最簡單的insert操作, 需要幾十秒,但99%的insert卻又可以在幾毫秒完成,這又是為什麼了?

dba此時心中有無限的疑惑,到底是什麼原因呢? 磁碟IO性能變差了?還是業務運維人員反饋的流量壓根就不對? 還是資料庫內部出問題?昨天不是還好好的嗎?

當資料庫出現響應時間不穩定的時候,我們在操作系統上會看到磁碟的利用率會比較高,如果觀察仔細一點,還可以看到,存在一些讀的IO. 資料庫伺服器如果存在大量的寫IO,性能一般都是正常跟穩定的,但只要存在少量的讀IO,則性能開始出現抖動,存在大量的讀IO時(排除配備非常高速磁碟的機器),對於在線交易的資料庫系統來說,大概性能就雪崩了。為什麼操作系統上看到的磁碟讀IO跟寫IO所帶來的性能差距這么大呢?

如果親之前沒有注意到上述的現象,親對上述的結論也是懷疑。但請看下面的分解。

在寫這個文章之前,作者閱讀了大量跟的IO相關的代碼,如非同步IO線程的相關的,innodb_buffer池相關的,以及跟讀數據塊最相關的核心函數buf_page_get_gen函數以及其調用的相關子函數。為了將文章寫得通俗點,看起來不那麼累,因此不再一行一行的將代碼解析寫出來。

咱們先來提問題。buf_page_get_gen函數的作用是從Buffer bool裡面讀數據頁,可能存在以下幾種情況。

提問. 數據頁不在buffer bool 裡面該怎麼辦?

回答:去讀文件,將文件中的數據頁載入到buffer pool裡面。下面是函數buffer_read_page的函數,作用是將物理數據頁載入到buffer pool, 圖片中顯示

buffer_read_page函數棧的頂層是pread64(),調用了操作系統的讀函數。


通過解析buf_wait_for_read函數的下層函數,我們知道其實通過首先自旋加鎖pin的方式,超過設定的自旋次數之後,進入等待,等待IO完成被喚醒。這樣節省不停自旋pin時消耗的cpu,但需要付出被喚起時的開銷。

再繼續擴展問題: 如果會話線程A 經過物理IO將數據頁1001讀入buffer之後,他需要修改這個頁,而在會話線程A之後的其他的同樣需要訪問數據頁1001的會話線程,即使在數據頁1001被入讀buffer pool之後,將仍然處於等待中。因為在數據頁上讀取或者更新的時候,同樣需要上鎖,這樣才能保證數據頁並發讀取/更新的一致性。

由此可見,當一個高並發的系統,出現了熱點數據頁需要從磁碟上載入到buffer pool中時,造成的延遲,是難以想像的。因此排在等待熱點頁隊列最後的會話線程最後才得到需要的頁,響應時間也就越長,這就是造成了一個簡單的sql需要執行幾十秒的原因。

再回頭來看上面的問題,mysql資料庫出現性能下降時,可以看到操作系統有讀IO。 原因是,在資料庫對數據頁的更改,是在內存中的,然後通過檢查點線程進行非同步寫盤,這個非同步的寫操作是不堵塞執行sql的會話線程的。所以,即使看到操作系統上有大量的寫IO,資料庫的性能也是很平穩的。但當用戶線程需要查找的數據頁不在buffer pool中時,則會從磁碟上讀取,在一個熱點數據頁不是非常多的情況下,我們設置足夠大的innodb_buffer_pool的size, 基本可以緩存所有的數據頁,因此一般都不會出現缺頁的情況,也就是在操作系統上基本看不到讀的IO。 當出現讀的IO時,原因時在執行buf_read_page_low函數,從磁碟上讀取數據頁到buffer pool, 則資料庫的性能則開始下降,當出現大量的讀IO,資料庫的性能會非常差。

3. 網路SS|D是什麼

簡單來說,SSID就是你的路由器熱點的名字,就是別人通過WIFI找到你的伺服器的名字。找到了這個名字,才能連接WIFI。

4. mysql資料庫find

舉個例子來說

有個文章表裡面有個type欄位 他存儲的是文章類型 有 頭條 推薦 熱點 圖文 …… 等等

現在有篇文章他既是 頭條 又是熱點 還是圖文

type中以 的格式存儲

們我們如何用sql查找所有type中有 圖文標準的文章呢??

這就要我們的find_in_set出馬的時候到了

以下為引用的內容

select * from article where FIND_IN_SET( type)

mysql手冊中find_in_set函數的語法

FIND_IN_SET(str strlist)

假如字元串str 在由N 子鏈組成的字元串列表strlist 中 則返回值的范圍在 到 N 之間

一個字元串列表就是一個由一些被 符號分開的子鏈組成的字元串 如果第一個參數是一個常數字元串 而第二個是type SET列 則 FIND_IN_SET() 函數被優化 使用比特計算

如果str不在strlist 或strlist 為空字元串 則返回值為 如任意一個參數為NULL 則返回值為 NULL 這個函數在第一個參數包含一個逗號( )時將無法正常運行

mysql> SELECT FIND_IN_SET( b a b c d )

> 因為b 在strlist集合中放在 的位置 從 開始

select FIND_IN_SET( ) 返回 就是 這時候的strlist集合有點特殊 只有一個字元串 其實就是要求前一個字元串 一定要在後一個字元串集合中 才返回 大於 的數

select FIND_IN_SET( )

返回 select FIND_IN_SET( ) 返回

注意

select * from treenodes where FIND_IN_SET(id )

使用find_in_set函數一次返回多條記錄

id 是一個表的欄位 然後每條記錄分別是id等於 的時候

有點類似in (集合)

lishixin/Article/program/MySQL/201311/29463

熱點內容
資料庫時區 發布:2024-11-24 18:28:30 瀏覽:613
板的塑性演算法 發布:2024-11-24 18:17:59 瀏覽:28
酷狗緩存亂碼 發布:2024-11-24 18:12:42 瀏覽:508
aes演算法模式 發布:2024-11-24 17:47:19 瀏覽:611
linux查看埠是否佔用 發布:2024-11-24 17:42:15 瀏覽:466
手機電影天堂的文件夾 發布:2024-11-24 17:39:08 瀏覽:689
吉林金稅盤安全伺服器地址 發布:2024-11-24 17:39:00 瀏覽:276
360無法訪問網路 發布:2024-11-24 17:32:48 瀏覽:558
普通員工解壓拓展注意什麼細節 發布:2024-11-24 17:32:06 瀏覽:435
安裝密碼鎖為什麼要在裡面纏膠帶 發布:2024-11-24 17:27:59 瀏覽:981