每天4億行SQLite訂單大數據測試(源碼)

来源:http://www.cnblogs.com/nnhy/archive/2017/06/02/BigData.html
-Advertisement-
Play Games

為了驗證SQLite的性能巔峰,我們來做一個大數據測試。 模擬每天4億票銷售訂單,分表分庫,每天一個資料庫文件,有訂單號、部門節點、時間等。 租用阿裡雲最低配置ECS,單核1G記憶體,1M帶寬,每年300塊,每天九毛錢 ...


SQLite單表4億訂單,大數據測試

SQLite作為嵌入式資料庫的翹楚,廣受歡迎!
新生命團隊自2010年以來,投入大量精力對SQLite進行學習研究,成功應用於各系統非致命數據場合。

SQLite極致性能

  • 關閉同步,Synchronous=Off,提升性能。添刪改操作時不必同步等待寫入磁碟,操作系統會延遲若幹毫秒批量寫入
  • 設置WAL模式,Journal Mode=WAL,減少鎖定。寫入向前日誌模式,避免多線程訪問時鎖定資料庫,寫入時不必使用排它鎖影響其它線程讀取,而是把事務操作寫入到WAL文件中,延遲合併
  • 加大緩存,Cache Size=5000,提升性能。操作系統通過文件映射MapFile把整個資料庫文件映射進入記憶體,實際查詢時會把用到數據所在附近頁預先載入進入緩存,極大提升查詢性能
  • 插入速度 5000~16000tps,依賴CPU,HDD/SSD差別不大,主要受限於SQLite.Data.dll的Prepare
  • 查詢速度 非首次查詢,緩存命中以後,索引查詢基本上都是毫秒級。資料庫較大則相應加大緩存,速度不變。
  • 查記錄數 單表數據超過一千萬行以後,儘量不要使用Select Count,否則可能需要十幾秒到半分鐘的樣子才能返回。NewLife.XCode封裝了'Meta.Count'

當然,SQLite不適合多線程高併發寫入,多線程高併發讀取倒是非常不錯。
因為資料庫就在進程內,高併發讀取一般比其它RDS要快一大截。
總的來說,SQLite資料庫甭管多少數據多大庫文件,只要配置得當,記憶體管夠,性能不是太大問題!

SQLite大數據

為了驗證SQLite的性能巔峰,我們來做一個大數據測試。
模擬每天4億票銷售訂單,分表分庫,每天一個資料庫文件,有訂單號、部門節點、時間等。

1, Test項目生成4億行訂單數據,主鍵自增ID,訂單號建立索引,文件大小26.5G

2, Web項目,魔方+XCode,首次查詢較慢,約427毫秒,需要預熱
不同機器的首次查詢時間偏差比較大,最大可能達到幾秒鐘
本機第一次啟動該項目時,魔方需要從公網下載SQLite驅動文件以及樣式資源文件

3, 第二頁,99毫秒,操作系統文件映射緩存生效

4, 第20000頁,147毫秒,系統緩存依然生效

5, 第200000頁,32021毫秒,距離太遠,文件系統緩存沒有命中

6, 第200001頁,867毫秒,緩存命中

7, 查詢一個中間訂單號000199999980,20毫秒,索引命中
顯然,只要有索引,多大數據都不怕

8, 本地記憶體占用150M。雖然整個資料庫26.5G,但操作系統只會載入需要部分
對於重要程度不是特別高的場合,可以大量使用SQLite庫保存歷史數據,平時用不到的時候只占硬碟,不占記憶體

9, 記錄數Select Count,362058毫秒,約6分鐘,超級慢

SQLite在雲端

http://bigdata.newlifex.com/Admin admin/admin

  • 租用阿裡雲最低配置ECS,單核1G,1M帶寬,每年300塊,每天九毛錢
  • 部署BigData項目到ECS,訪問正常

源碼及資料庫

大數據源碼 http://git.newlifex.com/Stone/BigData
大數據鏡像 https://github.com/nnhy/BigData
4億訂單數據 http://pan.baidu.com/s/1skZJ2ih
2億訂單數據 http://pan.baidu.com/s/1bo9NFFx
資料庫下載後,解壓縮得到Data.db,拷貝到Web併排的Data裡面,Data裡面還有一個Membership.db

 

C#/.Net大數據討論群:1600800


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

-Advertisement-
Play Games
更多相關文章
  • 根據天計算訪問量 先建一個表、插入一些數據 每一條數據表示用戶訪問某網站的日期(如:2000-01-01) mysql> CREATE TABLE t1( -> year YEAR(4), -> month INT(2) UNSIGNED ZEROFILL, -> day INT(2) UNSIGN ...
  • 解釋之前,先說明這樣做的目的:如果一個模型我們只打算對現有數據用一次就不再用了,那麼正則化沒必要了,因為我們沒打算在將來他還有用,正則化的目的是為了讓模型的生命更長久,把它扔到現實的數據海洋中活得好,活得久。 再簡單解釋一下正則化,以下內容來自PRML前三章,具體頁數記不清了。 上圖中的模型是線性回 ...
  • SQL Server系列: 高可用方案 SQL Server AlwaysOn SQL Server 資料庫鏡像 SQL Server 事務日誌傳輸 SQL Server 複製訂閱 索引與存儲 SQL Server 使用全文索引進行頁面搜索 SQL Server 執行計劃緩存 SQL Server ...
  • 1.在給定時間上加減天數 SQL> select to_char(to_date('20170531000000','yyyymmdd HH24:MI:SS')+4,'YYYYMMDDHH24MISS' )from dual ; >20170604000000 2.在給定時間上加減小時數 SQL>s ...
  • 按照windows 7 64位 安裝oracle 11g R2中的方法成功安裝Oracle 11g後,共有7個服務,這七個服務的含義分別為: 1. Oracle ORCL VSS Writer Service:Oracle捲映射拷貝寫入服務,VSS(Volume Shadow Copy Servic ...
  • XtraBackup介紹 XtraBackup是Percona公司的開源項目,用以實現類似Innodb官方的熱備份工具InnoDB Hot Backup的功能,它支持線上熱備份(備份時不影響數據讀寫)。到目前為止,最新的版本為Percona XtraBackup 2.4.7. XtraBackup有... ...
  • Oracle 12C加入了一個非常有新意的功能“可插拔資料庫”特性,實現了資料庫(PDB)在“容器”(CDB)上的拔功能,既能提高系統資源的利用率,也簡化大面積資料庫的管理和遷移工作。 下麵我們體驗一下可插拔資料庫的CDB和PDB的操作: 基本信息:根容器(CDB):CUP可插拔資料庫(PDB):T ...
  • 實現伺服器A資料庫DBName和伺服器B資料庫DBName資料庫數據的實時同步。此作業的前提條件為兩個伺服器的資料庫同步表結構必須完全一致。 1)發佈伺服器端: 圖1 圖2 圖3 圖4 圖5 圖6 圖7 圖8 圖9 圖10 圖11 圖12 訂閱伺服器端: 圖1 圖2 圖3 圖4 圖5 圖6 圖7 圖 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...