日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:52010
  • 待審:67
  • 小程序:12
  • 文章:1106242
  • 會(huì)員:784

介紹

是否曾經(jīng)發(fā)現(xiàn)自己處于需要大量虛擬數(shù)據(jù)進(jìn)行測(cè)試,但又不想花費(fèi)數(shù)小時(shí)編寫腳本或手動(dòng)插入記錄的情況?或者您可能對(duì)如何利用 MySQL 8.0 中的新功能來簡(jiǎn)化數(shù)據(jù)庫任務(wù)感到好奇?好吧,你可要好好享受一下了!在這篇文章中,我們將探索如何使用通用表表達(dá)式 (CTE) 輕松生成大量虛擬數(shù)據(jù)并將其插入到 MySQL 數(shù)據(jù)庫中。

想象一下需要在表中填充一百萬個(gè)哈希值以進(jìn)行負(fù)載測(cè)試或性能基準(zhǔn)測(cè)試。聽起來像一場(chǎng)噩夢(mèng),對(duì)吧?不再!隨著 MySQL 8.0 中 CTE 的出現(xiàn),您可以在幾秒鐘內(nèi)實(shí)現(xiàn)這一目標(biāo)。讓我們深入了解它的工作原理以及如何使用這個(gè)強(qiáng)大的功能來簡(jiǎn)化您的數(shù)據(jù)生成需求。

TL; DR

公用表表達(dá)式(CTE)是MySQL 8.0中添加的新功能,可以用來輕松輸入大量簡(jiǎn)單的虛擬數(shù)據(jù)。例如,如果您想將 100 萬條虛擬數(shù)據(jù)輸入到一個(gè)存儲(chǔ)哈希值的名為 hashes 的表中,您可以通過以下步驟實(shí)現(xiàn):

表定義

首先,創(chuàng)建表:

創(chuàng)建表哈希(
  id INT 主鍵自動(dòng)遞增,
  哈希 CHAR(64)
);

登錄后復(fù)制

查詢執(zhí)行

設(shè)置會(huì)話變量以允許更高的遞歸深度:

設(shè)置會(huì)話cte_max_recursion_深度= 1000000;

登錄后復(fù)制

然后,執(zhí)行CTE插入100萬行:

插入哈希值(hash)
帶有遞歸 cte (n) AS
(
  選擇1
  聯(lián)合所有
  從 cte 中選擇 n + 1,其中 n 



<p>此方法利用遞歸公用表表達(dá)式來生成虛擬數(shù)據(jù)。</p>

<h2>
  
  
  了解 CTE
</h2>

<p>公共表表達(dá)式(CTE)是一個(gè)命名的臨時(shí)結(jié)果集,可以在單個(gè)語句中多次引用。 CTE 對(duì)于簡(jiǎn)化復(fù)雜查詢和提高可讀性特別有用。</p>

<h3>
  
  
  語法細(xì)目
</h3>

<h4>
  
  
  設(shè)置遞歸深度
</h4>



<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">設(shè)置會(huì)話cte_max_recursion_深度= 1000000;

登錄后復(fù)制

cte_max_recursion_depth系統(tǒng)變量設(shè)置遞歸的上限。默認(rèn)情況下,它是1000,所以要遞歸更多,你需要調(diào)整它。在這里,我們將其設(shè)置為 100 萬。

CTE 查詢

插入哈希值(hash)
帶有遞歸 cte (n) AS
(
  選擇1
  聯(lián)合所有
  從 cte 中選擇 n + 1,其中 n 



<p>讓我們分解這個(gè)查詢:</p>

登錄后復(fù)制

使用遞歸 cte (n):這將啟動(dòng) CTE 定義。 cte是臨時(shí)結(jié)果集的名稱,n是列。

SELECT 1:這是CTE的非遞歸部分,作為起點(diǎn)(初始值)。

UNION ALL SELECT n + 1 FROM cte WHERE n

SELECT SHA2(n, 256) FROM cte:查詢的最后部分選擇每個(gè) n 值的 SHA-256 哈希,生成用于插入的虛擬數(shù)據(jù)。

怎么運(yùn)行的

CTE 遞歸生成從 1 到 1,000,000 的數(shù)字。對(duì)于每個(gè)數(shù)字,它計(jì)算 SHA-256 哈希值并將其插入哈希表中。這種方法非常高效,并且利用 MySQL 的遞歸功能來無縫處理大數(shù)據(jù)量。

處理速度

驗(yàn)證環(huán)境

為了了解此功能的影響,我使用了 Gitpod Enterprise 工作區(qū),利用強(qiáng)大且短暫的環(huán)境來避免設(shè)置和安裝的麻煩。這是設(shè)置的概覽:

機(jī)器:Gitpod Enterprise XXLarge 工作區(qū)

操作系統(tǒng):Ubuntu 22.04.4 LTS(Jammy Jellyfish)

容器化:Docker 版本 26.0.1

MySQL 版本:官方 MySQL 8.0 Docker 鏡像

結(jié)果

對(duì)于 100 萬行,查詢執(zhí)行時(shí)間約為 4.46 秒:

mysql&gt; INSERT INTO 哈希值(hash)
    -&gt; 帶有遞歸 cte (n) AS
    -&gt; (
    -&gt; 選擇 1
    -&gt; 聯(lián)合所有
    -&gt; 從 cte 中選擇 n + 1,其中 n  )
    -&gt; 從 cte 中選擇 SHA2(n, 256);
查詢正常,1000000 行受影響(4.43 秒)
記錄:1000000 重復(fù):0 警告:0

登錄后復(fù)制

性能指標(biāo)

行數(shù) 執(zhí)行時(shí)間
1,000 0.03秒
10,000 0.07秒
100,000 0.42秒
1,000,000 4.43秒
10,000,000 48.53秒

結(jié)論

在 MySQL 8.0 中使用 CTE 改變了游戲規(guī)則,可以快速生成大量虛擬數(shù)據(jù)。它對(duì)于負(fù)載測(cè)試和性能基準(zhǔn)測(cè)試特別方便。只需幾行代碼,您就可以輕松填充表格,然后返回項(xiàng)目的其他重要部分。

不要猶豫,嘗試不同的數(shù)據(jù)生成策略和遞歸深度,看看哪種最適合您。有關(guān)安全性和日志分析的更多提示和見解,請(qǐng)?jiān)?Twitter 上關(guān)注我@Siddhant_K_code,并隨時(shí)了解此類最新且詳細(xì)的技術(shù)內(nèi)容。快樂編碼!

分享到:
標(biāo)簽:中大 注入 簡(jiǎn)單 虛擬 規(guī)模
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 52010

    網(wǎng)站

  • 12

    小程序

  • 1106242

    文章

  • 784

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定