mysql 批量插入500W 測試

来源:https://www.cnblogs.com/yingjie13/archive/2018/09/25/9699070.html
-Advertisement-
Play Games

set_time_limit(800);$dsn = 'mysql:host=localhost;dbname=test';$db = new PDO($dsn,'root','',array(PDO::ATTR_PERSISTENT => true)); //刪除上次的插入數據$db->query ...


set_time_limit(800);
$dsn = 'mysql:host=localhost;dbname=test';
$db = new PDO($dsn,'root','',array(PDO::ATTR_PERSISTENT => true));

//刪除上次的插入數據
$db->query('delete from `test`');
//開始計時
$start_time = time();
$sum = 5000000;
// 測試選項
$num = 2;
/*
$values = '';
for ($i = 1; $i < $sum; $i++) {
$values .= "($i, 'testtest'),";
}
$values = trim($values, ',');
$db->query("insert into `test` (`id`, `name`) values $values");
*/

if ($num == 1){

// 單條插入
for($i = 0; $i < $sum; $i++){
$db->query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");
}
} elseif ($num == 2) {
// 批量插入,為了不超過max_allowed_packet,選擇每10萬插入一次
for ($i = 0; $i < $sum; $i++) {
if ($i == $sum - 1) { //最後一次
$time = time();
if ($i%10000 == 0){
$values = "('testtest', $time)";
$db->query("insert into `test` ( `name`, `ctime`) values $values");
} else {
$values .= ",('testtest', $time)";
$db->query("insert into `test` (`name`, `ctime`) values $values");
}
break;
}
if ($i%10000 == 0) { //平常只有在這個情況下才插入
if ($i == 0){
$time = time();
$values = "('testtest', $time)";
} else {
$values = trim($values, ',');
$db->query("insert into `test` (`name`, `ctime`) values $values");
$values = "($i, 'testtest')";
}
} else {
$time = time();
$values .= ",('testtest', $time)";
}
}
} elseif ($num == 3) {
// 事務插入
$db->beginTransaction();
for($i = 0; $i < $sum; $i++){
$db->query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");
}
$db->commit();
} elseif ($num == 4) {
// 文件load data
$filename = dirname(__FILE__).'/test.sql';
$fp = fopen($filename, 'w');
for($i = 0; $i < $sum; $i++){
fputs($fp, "$i,'testtest'\r\n");
}
$db->exec("load data infile '$filename' into table test fields terminated by ','");
}

$end_time = time();
echo "總耗時", ($end_time - $start_time), "秒\n";
echo "峰值記憶體", round(memory_get_peak_usage()/1000), "KB\n";

 

/*
* 1 批量個數儘量控制在10000以下
* 2 查詢時 MyIASM 明顯比 Innodb快
*/

 

參考

http://www.codeceo.com/article/mysql-insert-compare.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很久沒來更新博客,自感是一個只會搬磚的勞工,總搞些MySQL相關的資料庫實在無聊,且時不時遇到些不講道理的Dev吧,真的是心累至極,有種想回頭我也去乾開發的衝動,當個需求者有話語權要風得風,要雨得雨多帥。以上純屬個人小目標,萬一哪天實現了呢,豈不美滋滋,從此走上人生巔峰,頓覺做技術不再那麼枯燥了。 ...
  • 詳解Oracle客戶端,PL/SQL工具下載: 下載地址:http://www.oraclejsq.com/getOracle_jcjc.do?nodeid=010100114 ...
  • 簡介 大數據平臺通過將所有數據整合起來,充分分析與挖掘數據的內在價值,為業務部門提供數據平臺,數據產品與數據服務。大數據平臺接入的數據中可能包括很多用戶的隱私和敏感信息,如用戶在酒店的入住紀錄,用戶支付信息等,這些數據存在可能泄漏的風險。大數據平臺一般通過用戶認證,許可權管理以及數據加密等技術保證數據 ...
  • 最近一直在瞎搬磚,最大的感觸是運維工作難做。不過廢話不多說,最近被分配了一項比較有意思的task,嘗試著非root用戶搭建MHA並測試下能否成功漂移,以下是兩天測試和文檔編寫的成果,分享給各位看客,歡迎交流學習。 測試的目的: 現行的主流搭建MHA使用的用戶是root來傳遞公鑰以及進行一些切換、摘除 ...
  • 當今,世界無時無刻不在發生著變化。對於技術領域而言,普遍存在的一個巨大變化就是為大數據(Big data)打開了大門,並應用大數據技相關技術來改善各行業的業務並促進經濟的發展。目前,大數據的作用已經上升到一定程度,對於小型或大型公司而言,從所收集的數據中提取出有用的信息已被是非常寶貴的。此外,大數據 ...
  • 創建表 Create table <tabname> ( 修改表列(長度、類型)(修改之後最好reorg一下表) ALTER TABLE <tabname> ALTER COLUMN <colname> SET DATA TYPE <數據類型>; --(和sqlserver有區別,沒有DATA TY ...
  • 創建全文索引的必須條件 必須具有全文目錄,然後才能創建全文索引。 目錄是包含一個或多個全文索引的虛擬容器。 使用SSMS資料庫管理工具創建全文索引 1、連接資料庫,選擇資料庫,選擇數據表-》右鍵數據表-》選擇全文索引-》選擇定義全文索引。 2、在全文索引嚮導點擊下一步。 3、在全文索引嚮導彈出框-》 ...
  • 單表查詢 先創建表 1.註意: select * from t1 where 條件 group by 分組欄位 1.分組只能查詢分組欄位,要想查看其餘的利用聚合函數 2.聚合函數的分類:count,min,max,avg,group_concat,sum等。 3.模糊匹配:用like關鍵字。 sel ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...