国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)

2024-07-21 02:41:13
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
   今天碰到了性能問(wèn)題,DB Server 的 CPU 100%,vmstat 的輸出也很高。找到 CPU 高的 sql 語(yǔ)句是使用了一個(gè)將 ip 地址字符串轉(zhuǎn)換為數(shù)字的 PL/SQL 自定義函數(shù),后來(lái)將這個(gè)邏輯放到數(shù)據(jù)庫(kù)外的 VB 程序?qū)崿F(xiàn),CPU 使用率下降,問(wèn)題解決。

    其實(shí)那個(gè)函數(shù)處理并不復(fù)雜,也沒(méi)有訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象,沒(méi)想到有如此大的影響。得出的結(jié)論就是:與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理過(guò)程放到數(shù)據(jù)庫(kù)以外的調(diào)用程序來(lái)實(shí)現(xiàn),即便用 sql 程序可以實(shí)現(xiàn)也應(yīng)如此。

    還有一個(gè)要注重的問(wèn)題,即不要在查詢語(yǔ)句中調(diào)用自定義的 PL/SQL 函數(shù),舉個(gè)例子:

自定義函數(shù)如下,輸入16位整數(shù) IP 地址,輸出 IP 所屬省份,ipdb 中有8萬(wàn)條數(shù)據(jù)。 與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)CREATE OR REPLACE FUNCTION fn_ipaddr_to_PRovince (p_ipaddr NUMBER)
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    RETURN VARCHAR2
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)IS
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    v_ret VARCHAR2 (100) := '';
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)BEGIN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    BEGIN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        SELECT province
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)            INTO v_ret
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)            FROM ipdb
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        WHERE start_ip <= p_ipaddr AND end_ip >= p_ipaddr AND ROWNUM = 1;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    EXCEPTION
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        WHEN NO_DATA_FOUND
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        THEN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)            v_ret := '';
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    END;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    RETURN v_ret;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)EXCEPTION
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    WHEN OTHERS
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    THEN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        RAISE;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)END fn_ipaddr_to_province;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)/

根據(jù)省份確定服務(wù)器地址,domainname 中有35條數(shù)據(jù)。

方法一:
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)...
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)BEGIN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    SELECT serverip
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        INTO v_serverip
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        FROM domainname
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    WHERE province = fn_ipaddr_to_province (p_ip) AND ROWNUM = 1;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)EXCEPTION
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    WHEN NO_DATA_FOUND
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    THEN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        v_serverip := 'mp3.u-vv.com';
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)END;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)...

這種方法 CPU 使用率 90% 以上

方法二: 與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)...
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)v_province := fn_ipaddr_to_province (p_ip);
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)BEGIN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn) 
   SELECT serverip
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        INTO v_serverip
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        FROM domainname
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    WHERE province = v_province AND ROWNUM = 1;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)EXCEPTION
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    WHEN NO_DATA_FOUND
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)    THEN
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)        v_serverip := 'default domain';
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)END;
與數(shù)據(jù)庫(kù)無(wú)關(guān)的處理放到數(shù)據(jù)庫(kù)以外來(lái)實(shí)現(xiàn)...

這種方法 CPU 使用率 40% 左右

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 榆树市| 榕江县| 黄龙县| 河北区| 民乐县| 修武县| 惠州市| 且末县| 个旧市| 崇阳县| 贵德县| 潼南县| 南靖县| 永嘉县| 穆棱市| 双城市| 卢龙县| 长垣县| 阜新| 定西市| 昭平县| 沭阳县| 安顺市| 汾阳市| 称多县| 都安| 乳源| 玉溪市| 兰坪| 彰化县| 郑州市| 余干县| 东阳市| 柳河县| 曲沃县| 德保县| 监利县| 北海市| 朔州市| 漳浦县| 安达市|