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
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...