色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql過程結(jié)束后內(nèi)存不釋放

使用mysql時(shí),有時(shí)候會(huì)遇到一個(gè)非常頭疼的問題,就是當(dāng)你執(zhí)行完一個(gè)存儲(chǔ)過程后,占用的內(nèi)存并沒有及時(shí)釋放,導(dǎo)致內(nèi)存占用不斷增加,最終導(dǎo)致程序崩潰。

DELIMITER ;;
CREATE PROCEDURE test_procedure()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i< 10000000 DO
SET i = i + 1;
END WHILE;
END;;

以上是一個(gè)簡單的示例存儲(chǔ)過程,里面做了一個(gè)簡單的循環(huán)操作,執(zhí)行完這個(gè)存儲(chǔ)過程后,我們可以通過查看mysql進(jìn)程的內(nèi)存占用情況來判斷是否有內(nèi)存泄漏的情況。

執(zhí)行以下命令來查看mysql進(jìn)程的內(nèi)存占用情況:

ps aux | grep mysqld

可以看到類似以下的結(jié)果:

root      2053  7.1 19.1 1024812 610860 pts/0  Sl   12:22   0:18 /usr/sbin/mysqld

其中的“610860”就是mysql進(jìn)程的內(nèi)存占用大小(以KB為單位),我們可以重復(fù)執(zhí)行這個(gè)存儲(chǔ)過程來驗(yàn)證內(nèi)存是否會(huì)一直占用。

事實(shí)證明,這個(gè)存儲(chǔ)過程確實(shí)會(huì)導(dǎo)致內(nèi)存泄漏,執(zhí)行完一次存儲(chǔ)過程后,內(nèi)存占用大小并沒有隨著存儲(chǔ)過程結(jié)束而下降,而是繼續(xù)增加。

那么這個(gè)問題該如何解決呢?其實(shí)只需要在存儲(chǔ)過程里加上一行語句即可:

DELIMITER ;;
CREATE PROCEDURE test_procedure()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i< 10000000 DO
SET i = i + 1;
END WHILE;
SET i = NULL; --新增這一行
END;;

這一行語句設(shè)置了變量i為NULL,可以釋放變量占用的內(nèi)存,從而解決了內(nèi)存泄漏的問題。

綜上所述,mysql存儲(chǔ)過程確實(shí)存在內(nèi)存泄漏的問題,但只需要在存儲(chǔ)過程里添加一行語句即可解決,這也是開發(fā)過程中需要注意的一個(gè)問題。