国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 惠水县| 长武县| 孝义市| 宝坻区| 肃北| 遂平县| 贺州市| 四川省| 通海县| 镇巴县| 治县。| 宜章县| 武清区| 抚松县| 新乐市| 商城县| 光山县| 象州县| 措勤县| 怀远县| 朝阳县| 桃园市| 原阳县| 攀枝花市| 宜丰县| 东乡| 华阴市| 昌宁县| 璧山县| 子洲县| 澄江县| 武功县| 阳西县| 高要市| 象州县| 贵溪市| 通渭县| 海宁市| 龙陵县| 丹棱县| 滕州市|