OceanBase logo

OceanBase

A unified distributed database ready for your transactional, analytical, and AI workloads.

DEPLOY YOUR WAY

OceanBase Cloud

The best way to deploy and scale OceanBase

OceanBase Enterprise

Run and manage OceanBase on your infra

TRY OPEN SOURCE

OceanBase Community Edition

The free, open-source distributed database

OceanBase seekdb

Open source AI native search database

Customer Stories

Real-world success stories from enterprises across diverse industries.

View All
BY USE CASES

Mission-Critical Transactions

Global & Multicloud Application

Elastic Scaling for Peak Traffic

Real-time Analytics

Active Geo-redundancy

Database Consolidation

Resources

Comprehensive knowledge hub for OceanBase.

Blog

Live Demos

Training & Certification

Documentation

Official technical guides, tutorials, API references, and manuals for all OceanBase products.

View All
PRODUCTS

OceanBase Cloud

OceanBase Database

Tools

Connectors and Middleware

QUICK START

OceanBase Cloud

OceanBase Database

BEST PRACTICES

Practical guides for utilizing OceanBase more effectively and conveniently

Company

Learn more about OceanBase – our company, partnerships, and trust and security initiatives.

About OceanBase

Partner

Trust Center

Contact Us

International - English
中国站 - 简体中文
日本 - 日本語
Sign In
Start on Cloud

A unified distributed database ready for your transactional, analytical, and AI workloads.

DEPLOY YOUR WAY

OceanBase Cloud

The best way to deploy and scale OceanBase

OceanBase Enterprise

Run and manage OceanBase on your infra

TRY OPEN SOURCE

OceanBase Community Edition

The free, open-source distributed database

OceanBase seekdb

Open source AI native search database

Customer Stories

Real-world success stories from enterprises across diverse industries.

View All
BY USE CASES

Mission-Critical Transactions

Global & Multicloud Application

Elastic Scaling for Peak Traffic

Real-time Analytics

Active Geo-redundancy

Database Consolidation

Comprehensive knowledge hub for OceanBase.

Blog

Live Demos

Training & Certification

Documentation

Official technical guides, tutorials, API references, and manuals for all OceanBase products.

View All
PRODUCTS
OceanBase CloudOceanBase Database
ToolsConnectors and Middleware
QUICK START
OceanBase CloudOceanBase Database
BEST PRACTICES

Practical guides for utilizing OceanBase more effectively and conveniently

Learn more about OceanBase – our company, partnerships, and trust and security initiatives.

About OceanBase

Partner

Trust Center

Contact Us

Start on Cloud
编组
All Products
    • Databases
    • iconOceanBase Database
    • iconOceanBase Cloud
    • iconOceanBase Tugraph
    • iconInteractive Tutorials
    • iconOceanBase Best Practices
    • Tools
    • iconOceanBase Cloud Platform
    • iconOceanBase Migration Service
    • iconOceanBase Developer Center
    • iconOceanBase Migration Assessment
    • iconOceanBase Admin Tool
    • iconOceanBase Loader and Dumper
    • iconOceanBase Deployer
    • iconKubernetes operator for OceanBase
    • iconOceanBase Diagnostic Tool
    • iconOceanBase Binlog Service
    • Connectors and Middleware
    • iconOceanBase Database Proxy
    • iconEmbedded SQL in C for OceanBase
    • iconOceanBase Call Interface
    • iconOceanBase Connector/C
    • iconOceanBase Connector/J
    • iconOceanBase Connector/ODBC
    • iconOceanBase Connector/NET
icon

OceanBase Database

SQL - V4.2.5

    Download PDF

    OceanBase logo

    The Unified Distributed Database for the AI Era.

    Follow Us
    Products
    OceanBase CloudOceanBase EnterpriseOceanBase Community EditionOceanBase seekdb
    Resources
    DocsBlogLive DemosTraining & Certification
    Company
    About OceanBaseTrust CenterLegalPartnerContact Us
    Follow Us

    © OceanBase 2026. All rights reserved

    Cloud Service AgreementPrivacy PolicySecurity
    Contact Us
    Document Feedback
    1. Documentation Center
    2. OceanBase Database
    3. SQL
    4. V4.2.5
    iconOceanBase Database
    SQL - V 4.2.5
    SQL
    KV
    • V 4.4.2
    • V 4.3.5
    • V 4.3.3
    • V 4.3.1
    • V 4.3.0
    • V 4.2.5
    • V 4.2.2
    • V 4.2.1
    • V 4.2.0
    • V 4.1.0
    • V 4.0.0
    • V 3.1.4 and earlier

    Performance test

    Last Updated:2026-04-27 03:14:13  Updated
    share
    What is on this page
    Prepare the environment
    Create a table
    Prepare the OBKV YCSB client
    Modify the YCSB test script
    Parameters
    Run the YCSB test

    folded

    share

    This topic describes how to test the performance of OBKV-HBase by using the Yahoo! Cloud Serving Benchmark (YCSB) tool.

    Prepare the environment

    1. Purchase an ApsaraDB for OceanBase instance from Alibaba Cloud. Select Standard Edition (Key-Value) for Series, Single-IDC for Deployment Method, 8 Cores, 32 GB for Node Specification, and 2 for Full-featured Replica.

      Notice

      At present, the Standard Edition (Key-Value) series is available only for customers on the allowlist. To purchase this series, contact ApsaraDB for OceanBase Technical Support.

      instance

    2. In the instance list, click the name of the purchased instance to go to the instance management page. In the left-side navigation pane, select Tenant Management and then click Create Tenant to create a tenant for the performance test. Specify 8 CPU cores and 32 GB of memory for the tenant.

    3. On the tenant management page, select the created tenant to go to the tenant workspace. Then, click Create Account to create a test account.

    Create a table

    On the tenant workspace page, click Log in to Database and log in to the created OceanBase database instance by using the created test account. Then, execute the following statement to create a table:

    CREATE TABLE test$family (
        K varbinary(1024) NOT NULL,
        Q varbinary(256) NOT NULL,
        T bigint(20) NOT NULL,
        V varbinary(1024) DEFAULT NULL,
        PRIMARY KEY (K, Q, T))
    block_size=8192 partition by key(K) partitions 100;
    

    Prepare the OBKV YCSB client

    After you prepare the test environment on the server, you need to purchase an ECS instance with 8 CPU cores and 16 GB of memory as the performance test client. The client and server must be in the same virtual private cloud (VPC). Then, you need to add the IP address of the client to the allowlist in Security Settings on the instance management page of the database. Subsequent operations in this topic are all performed on the performance test client.

    Make sure that you can run the following commands in the test environment:

    • git: sudo yum install git
    • mvn: sudo yum install maven
    • java: sudo yum install java
    1. Compile the core-0.12.0.jar package.

      Download the YCSB source code and switch to the 0.12.0 branch:

      [wieck@localhost ~] $ git clone https://github.com/brianfrankcooper/YCSB.git
      [wieck@localhost ~] $ cd YCSB
      [wieck@localhost YCSB] $ git checkout 0.12.0
      

      Run the following command to compile and obtain the JAR package. After the command is executed, the required core-0.12.0.jar package is placed in the YCSB/core/target/ directory.

      [wieck@localhost YCSB] $ mvn -pl com.yahoo.ycsb:core -am clean package -Dmaven.test.skip=true
      
    2. Add the YCSB core dependency.

      Download the obkv-hbase-client-java source code, place the core-0.12.0.jar package in the root directory of the obkv-hbase-client-java project, and modify the pom.xml file to add the com.yahoo.ycsb dependency.

      [wieck@localhost ~] $ git clone https://github.com/oceanbase/obkv-hbase-client-java.git
      [wieck@localhost ~] $ cp xx/YCSB/core/target/core-0.12.0.jar xx/obkv-hbase-client-java
      
      [wieck@localhost ~] $ cd obkv-hbase-client-java
      [wieck@localhost obkv-hbase-client-java] $ vim pom.xml
      // ...
          <dependency>
                  <groupId>org.powermock</groupId>
                  <artifactId>powermock-module-junit4</artifactId>
                  <version>${powermock.version}</version>
                  <scope>test</scope>
          </dependency>
          <dependency>
                  <groupId>com.yahoo.ycsb</groupId>
                  <artifactId>core</artifactId>
                  <version>0.12.0</version>
                  <scope>system</scope>
                  <systemPath>${project.basedir}/core-0.12.0.jar</systemPath>
          </dependency>
      </dependencies>
      
    3. Write the OBKV YCSB client.

      Various methods of YCSB need to be implemented in this step. YcsbBench.java is a sample client, which is placed in the src/main/java/com/alipay/oceanbase/hbase/util/ directory of the obkv-hbase-client-java project.

      [wieck@localhost ~] $ cd /obkv-hbase-client-java/src/main/java/com/alipay/oceanbase/hbase/util/
      [wieck@localhost util] $ vim YcsbBench.java
      
    4. Package the OBKV YCSB client into a JAR file.

      Run the packaging command in the root directory of the OBKV YCSB client. After the command is executed, the required JAR package named obkv-hbase-client-0.1.x-SNAPSHOT-jar-with-dependencies.jar appears in the target directory, which will be used for the YCSB test. In the package name, 0.1.x will be replaced with the actual version number.

      [wieck@localhost obkv-hbase-client-java] $ mvn assembly:assembly -Dmaven.test.skip=true
      

    Modify the YCSB test script

    After you download the YCSB source code and switch to the 0.12.0 branch, you need to modify the YCSB source code so that YCSB can identify the OBKV-HBase client.

    1. Modify the YCSB script.

      Modify the ycsb file to add the path of the OBKV-HBase client.

      [wieck@localhost YCSB] $ cd bin/
      [wieck@localhost YCSB] $ vim ycsb
      // ...
          "tarantool"    : "com.yahoo.ycsb.db.TarantoolClient",
          "voldemort"    : "com.yahoo.ycsb.db.VoldemortClient",
          "ob-hbase"     : "com.alipay.oceanbase.hbase.util.YcsbBench",
      }
      
    2. Configure YCSB dependencies.

    • In the root directory, create a folder named ob-binding/lib/ and place the client package in the folder.

      [wieck@localhost YCSB] $ mkdir -p ob-binding/lib/
      [wieck@localhost YCSB] $ cd ob-binding/lib/
      [wieck@localhost lib] $ cp obkv-hbase-client-java/target/obkv-hbase-client-0.1.5-SNAPSHOT-jar-with-dependencies.jar ./
      
    • Return to the root directory of YCSB and rename the pom.xml file as pom.xml.backup in the root directory.

      [wieck@localhost YCSB] $ mv pom.xml pom.xml.backup
      
    • Create a folder named lib in the root directory of YCSB. Upload the core-0.12.0.jar package to the lib folder in the root directory and run wget commands in the lib folder to download related packages.

      [wieck@localhost YCSB] $ mkdir lib
      [wieck@localhost YCSB] $ cd lib/
      [wieck@localhost lib] $ cp /xx/YCSB/core/target/core-0.12.0.jar ./
      [wieck@localhost lib] $ wget https://repo1.maven.org/maven2/org/apache/htrace/htrace-core4/4.1.0-incubating/htrace-core4-4.1.0-incubating.jar
      [wieck@localhost lib] $ wget https://repo1.maven.org/maven2/org/hdrhistogram/HdrHistogram/2.1.4/HdrHistogram-2.1.4.jar
      

      The file structure in the YCSB/lib directory is as follows:

      [wieck@localhost lib] $ ls
      YCSB/lib/core-0.12.0.jar
      YCSB/lib/htrace-core4-4.1.0-incubating.jar
      YCSB/lib/HdrHistogram-2.1.4.jar
      

    Parameters

    • OBKV-HBase parameters

      Before the test, you need to learn about the parameters of the OBKV-HBase client.

      // The following parameters are required for direct connection:
      "hbase.oceanbase.paramURL"     -> config URL
      "hbase.oceanbase.fullUserName" -> full user name like userName@tenantName#clusterName
      "hbase.oceanbase.password"     -> password of user
      "hbase.oceanbase.sysUserName"  -> SYS Tenant user name
      "hbase.oceanbase.sysPassword"  -> password of sys user
      
      // The following parameters are required for connection through OceanBase Database Proxy (ODP):
      "hbase.oceanbase.odpMode"      -> whether to use ODP
      "hbase.oceanbase.odpAddr"      -> ip addr of ODP
      "hbase.oceanbase.odpPort"      -> port of ODP
      "hbase.oceanbase.fullUserName" -> full user name like userName@tenantName#clusterName
      "hbase.oceanbase.password"     -> password of user
      "hbase.oceanbase.database"     -> database name
      

      For more parameters, see com.alipay.oceanbase.hbase.constants. The parameters can be used to connect to the corresponding OBServer node and control the performance of the client.

    • YCSB workload parameters

      The workload configurations are inherent in YCSB. For more information about workloads, see Core Workloads. You can use the official workload configurations provided by YCSB or customize the workload configurations. Alternatively, you can use the -p option to pass in parameters through a command, to flexibly specify the operation to perform and the amount of data involved.

      Among the workload parameters, the requestdistribution parameter will affect the resource utilization on the server. We recommend that you set the parameter to uniform so that the test data can be evenly distributed.

    Run the YCSB test

    The test script is located in the YCSB/bin directory of YCSB. After you configure the test parameter model, you can run commands to start a test. For more information about the test script, see Running a Workload.

    Notice

    For a cluster deployed in a public cloud, after you select the target instance, you can click Database Proxy in the left-side navigation pane to view the corresponding ODP node. You only need to enter the username when setting hbase.oceanbase.fullUserName. The tenant name and cluster name are not required.

    • Test the put performance: One put operation inserts 10 records into a table. After all put operations are completed, the table will contain 300 million records.

      The test command is as follows:

      ./bin/ycsb run ob-hbase -P workloads/workloada -s -threads $thread_num -p hbase.oceanbase.odpMode=true -p hbase.oceanbase.odpAddr="$odp_address" -p hbase.oceanbase.odpPort=$odp_port \
          -p hbase.oceanbase.fullUserName="$userName" -p hbase.oceanbase.password="$password" \
          -p hbase.oceanbase.database="$database" -p hbase.oceanbase.table="test" -p hbase.oceanbase.columnFamily="family" \
          -p insertproportion=1 -p readproportion=0 -p updateproportion=0 -p requestdistribution=uniform \
          -p recordcount=30000000 -p operationcount=30000000 -p server.connection.pool.size=$pool_size
      
    • Test the read performance:

      In a regular read performance test in YCSB, data is loaded first before the read operation. To avoid loading data repeatedly, you can specify the insertcount and insertstart parameters to reuse the data inserted in the put phase. After data is loaded, you need to execute the ALTER SYSTEM major freeze tenant=<your tenant name> statement to perform a major compaction before you start the read performance test.

      The test command is as follows:

      ./bin/ycsb run ob-hbase -P workloads/workloadc -s -threads $thread_num -p hbase.oceanbase.odpMode=true -p hbase.oceanbase.odpAddr="$odp_address" -p hbase.oceanbase.odpPort=$odp_port \
          -p hbase.oceanbase.fullUserName="$userName" -p hbase.oceanbase.password="$password" \
          -p hbase.oceanbase.database="$database" -p hbase.oceanbase.table="test" -p hbase.oceanbase.columnFamily="family" \
          -p recordcount=60000000 -p operationcount=30000000 -p insertcount=30000000 -p insertstart=30000000 \
          -p requestdistribution=uniform -p server.connection.pool.size=$pool_size
      

    Previous topic

    Monitoring metrics
    Last

    Next topic

    Synchronize data to OBKV-HBase by using Flink
    Next
    What is on this page
    Prepare the environment
    Create a table
    Prepare the OBKV YCSB client
    Modify the YCSB test script
    Parameters
    Run the YCSB test