YCSB工具原理重點內容解讀(二)

来源:https://www.cnblogs.com/syw20170419/archive/2023/03/25/17254326.html
-Advertisement-
Play Games

支持insert和批量insert,待研究怎麼設置 一、建表 (1)預設表名為usertable CREATE TABLE usertable ( YCSB_KEY VARCHAR(255) PRIMARY KEY, FIELD0 TEXT, FIELD1 TEXT, FIELD2 TEXT, FI ...


支持insert和批量insert,待研究怎麼設置

一、建表

(1)預設表名為usertable

CREATE TABLE usertable (
    YCSB_KEY VARCHAR(255) PRIMARY KEY,
    FIELD0 TEXT, FIELD1 TEXT,
    FIELD2 TEXT, FIELD3 TEXT,
    FIELD4 TEXT, FIELD5 TEXT,
    FIELD6 TEXT, FIELD7 TEXT,
    FIELD8 TEXT, FIELD9 TEXT,
FIELD10 VARCHAR(100) #YCSB的預設欄位長度是100
);

關鍵要點:

  1. 主鍵欄位需要命名為YCSB_KEY
  2. 其他欄位需要以FIELD作為首碼,並從1開始計數
  3. 添加與您在YCSB核心屬性中指定的相同數量的欄位,預設為10。
  4. 欄位的類型並不那麼重要,只要它們可以接受你在YCSB核心屬性中指定的長度的字元串,預設值是100;
  5. prepare測試時會優先判斷是否存在usertable表,存在則執行truncate清空表數據,若不存在則新建usertable表;

(2)如果自己另起了表名,如student,則運行時增加 -p table=student即可,此時運行腳本就會讀取student的表

./bin/ycsb load jdbc -s -P workloads/workloadd  -cp /syw_test/ycsb-0.17.0/jdbc-binding/lib/mysql-connector-java-5.1.46.jar
-p recordcount=1000 -p threads=5 -p operationcount=1000 -p table=usertable2

二、JDBC連接的重要預設值

#直接從源碼中可查內容
private static final String TABLE_NAME = "USERTABLE";
private static final int FIELD_LENGTH = 32;
private static final String FIELD_PREFIX = "FIELD";
private static final String KEY_PREFIX = "user";
private static final String KEY_FIELD = "YCSB_KEY";
private static final int NUM_FIELDS = 3;

三、配置參數(db.properties)

若是MySQL,則從jdbc-binding--->conf--->則可看到配置文件

db.driver=com.mysql.jdbc.Driver                # The JDBC driver class to use.
db.url=jdbc:mysql://127.0.0.1:3306/ycsb        # The Database connection URL.
db.user=admin                                # User name for the connection.
db.passwd=admin                                # Password for the connection.
db.batchsize=1000             # The batch size for doing batched inserts. Defaults to 0. Set to >0 to use batching.
jdbc.fetchsize=10                            # The JDBC fetch size hinted to the driver.
jdbc.autocommit=true                        # The JDBC connection auto-commit property for the driver.
jdbc.batchupdateapi=false     # Use addBatch()/executeBatch() JDBC methods instead of executeUpdate() for writes (default: false)
db.batchsize=1000             # The number of rows to be batched before commit (or executeBatch() when jdbc.batchupdateapi=true)

四、workload支持的配置參數詳解

Fieldcount:記錄中欄位的數量(預設值:10)
Fieldlength:每個欄位的大小(預設:100)
Minfieldlength:每個欄位的最小大小(預設值:1)
Readallfields:應該讀取所有欄位(true)或只讀取一個欄位(false)(預設值:true)
Writeallfields:應該更新和讀取/修改/寫入更新所有欄位(true)或只是一個(false)(預設:false)
Readproportion:應該讀取的操作的比例(預設:0.95)
Updateproportion:操作的更新比例(預設值:0.05)
Insertproportion:應該插入的操作的比例(預設:0)
Scanproportion:應該掃描的操作的比例(預設值:0)
Readmodifywriteproportion:讀取記錄、修改記錄、寫回記錄的操作比例(預設:0)
Requestdistribution:應該使用什麼分佈來選擇要操作的記錄-uniform(均勻分佈), zipfian, hotspot, sequential, exponential or latest(數據越新訪問概率越高)(預設:uniform)
Minscanlength:掃描的最小範圍(預設值:1)
Maxscanlength:掃描的最大範圍(預設:1000)
Scanlengthdistribution:對於掃描,應該使用什麼分佈來選擇要掃描的記錄數量,對於每次掃描,在1和maxscanlength之間(預設:uniform)
insertstart:用於並行載入和運行,為這個YCSB實例定義起始記錄(預設值:0)
insertcount:對於並行載入和運行,定義這個YCSB實例的記錄數量(預設:recordcount)
零填充:用於生成與字元串排序順序相容的記錄序列,以0填充記錄號。控制用於填充的0的數量。(預設值:1)
例如,對於第5行,如果zeropadding=1,則得到' user5 '鍵,如果zeropading=8,則得到' user00000005 '鍵。為了看到它的影響,零加法需要大於記錄數中的位數。
Insertorder:記錄是按鍵順序插入(" ordered "),還是按散列順序插入(" hashed ")(預設值:hashed)
Fieldnameprefix:欄位名的首碼,較短的可能會減少所需的存儲大小(預設:" field ")
core_workload_insertion_retry_limit:插入失敗重試次數,預設 0
core_workload_insertion_retry_interval:重試間隔(秒),預設 3

 五、相關SQL語法

insert

INSERT IGNORE INTO table ([columns]) VALUES(...)
INSERT IGNORE INTO table ([columns]) VALUES (?, ?, ?...), (?, ?, ?), ...

read

SELECT * FROM %s %s WHERE YCSB_KEY = ?
SELECT * FROM %s %s WHERE YCSB_KEY IN (.....)

scan

SELECT * FROM %s %s WHERE YCSB_KEY >= ? LIMIT ?

update

update tablename set Field[x]=? where YCSB_KEY = ?

delete

DELETE FROM %s WHERE YCSB_KEY = ?
DELETE FROM %s WHERE YCSB_KEY IN (....)

 

1.作者:Syw
2.出處:http://www.cnblogs.com/syw20170419/
3.本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
4.如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。

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

-Advertisement-
Play Games
更多相關文章
  • Antlr4 簡介 ANTLR(全名:ANother Tool for Language Recognition)是基於LL(*)演算法實現的語法解析器生成器(parser generator),用Java語言編寫,使用自上而下(top-down)的遞歸下降LL剖析器方法。由舊金山大學的Terence ...
  • 導入的文件 前端點擊上傳得到文件(MultipartFile file 【這裡是存放的臨時文件】) 本人前端用的vue3,elementui, 導入按鈕代碼 <!--導入文件 --> <el-col :span="1.5"> <el-button type="info" plain icon="el ...
  • 如題,很簡單,就是先用chardet 庫識別文件編碼,解碼之後再輸出成目標編碼。算是個偶爾能用上的小工具,要用的時候萬一沒有就很難受的那種,比如,網上下載了別人的項目文件,一打開全是亂碼…… 代碼 加了比較詳細的註釋~~ 看懂的要求應該不高,平時用過Python,知道幾個常用庫就行。 from pa ...
  • TIDB簡介 什麼是TIDB TiDB 是一個分散式 NewSQL 資料庫。它支持水平彈性擴展、ACID 事務、標準 SQL、MySQL 語法和 MySQL 協議,具有數據強一致的高可用特性,是一個不僅適合 OLTP 場景還適合 OLAP 場景的混合資料庫。 TiDB 是 PingCAP 公司自主設 ...
  • 在前面的設計和實現中,我們的微服務開發平臺通過JustAuth來實現第三方授權登錄,通過集成公共組件,著實減少了很多工作量,大多數的第三方登錄直接通過配置就可以實現。而在第三方授權登錄中,微信小程式授權登錄和APP微信授權登錄是兩種特殊的第三方授權登錄。 JustAuth之所以能夠將多種第三方授權登 ...
  • 使用 Linux dd 命令測試磁碟讀寫性能 從幫助手冊中可以看出,dd命令可以複製文件,根據操作數進行轉換和格式化。我這裡記錄一下dd命令用於測試磁碟I/O性能的過程。 dd 可從標準輸入或文件中讀取數據,根據指定的格式來轉換數據,再輸出到文件、設備或標準輸出。 dd 命令用法: Usage: d ...
  • Linux報錯:audit: backlog limit exceeded(審計:超出積壓限制) 系統版本:CentOS Linux release 7.6.1810 (Core) 問題現象:一次巡檢中發現業務系統打不開,對應的Linux伺服器ssh連接不上,但是能ping通,於是在VMware v ...
  • P2 MySQL三層結構 所謂安裝MySQL資料庫,就是在主機安裝一個資料庫管理系統(DBMS),這個管理程式可以管理多個資料庫。DBMS(database manage system) 一個資料庫可以創建多個表,以保存數據(信息)。 數據管理系統(DBMS)、資料庫和表的關係如圖所示: 數據在數據 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...