Multi-DBMS SQL Benchmarking Framework via JDBC

Related tags

Database benchbase
Overview

BenchBase

BenchBase (Java with Maven)

BenchBase (formerly OLTPBench) is a Multi-DBMS SQL Benchmarking Framework via JDBC.

Table of Contents


Quickstart

To clone and build BenchBase,

git clone --depth 1 https://github.com/cmu-db/benchbase.git
cd benchbase
./mvnw clean package

This produces artifacts in the target folder, which can be extracted,

cd target
tar xvzf benchbase-x-y-z.tgz # Change x-y-z appropriately.
cd benchbase-x-y-z           # Change x-y-z appropriately.

Inside this folder, you can run BenchBase. For example, to execute the tpcc benchmark,

java -jar benchbase.jar -b tpcc -c config/postgres/sample_tpcc_config.xml --create=true --load=true --execute=true

A full list of options can be displayed,

java -jar benchbase.jar -h

Description

Benchmarking is incredibly useful, yet endlessly painful. This benchmark suite is the result of a group of PhDs/post-docs/professors getting together and combining their workloads/frameworks/experiences/efforts. We hope this will save other people's time, and will provide an extensible platform, that can be grown in an open-source fashion.

BenchBase is a multi-threaded load generator. The framework is designed to be able to produce variable rate, variable mixture load against any JDBC-enabled relational database. The framework also provides data collection features, e.g., per-transaction-type latency and throughput logs.

The BenchBase framework has the following benchmarks:

(TODO(WAN): Get permission to migrate/copy Tim's wiki for benchmark descriptions)

This framework is design to allow for easy extension. We provide stub code that a contributor can use to include a new benchmark, leveraging all the system features (logging, controlled speed, controlled mixture, etc.)


Usage Guide

How to Build

Run the following command to build the distribution:

./mvnw clean package

The following files will be placed in the ./target folder:

  • benchbase-x.y.z.tgz
  • benchbase-x.y.z.zip

How to Run

Once you build and unpack the distribution, you can run benchbase just like any other executable jar. The following examples assume you are running from the root of the expanded .zip or .tgz distribution. If you attempt to run benchbase outside of the distribution structure you may encounter a variety of errors including java.lang.NoClassDefFoundError.

To bring up help contents:

java -jar benchbase.jar -h

To execute the tpcc benchmark:

java -jar benchbase.jar -b tpcc -c config/postgres/sample_tpcc_config.xml --create=true --load=true --execute=true

For composite benchmarks like chbenchmark, which require multiple schemas to be created and loaded, you can provide a comma separated list: `

java -jar benchbase.jar -b tpcc,chbenchmark -c config/postgres/sample_chbenchmark_config.xml --create=true --load=true --execute=true

The following options are provided:

usage: oltpbenchmark
 -b,--bench <arg>               [required] Benchmark class. Currently
                                supported: [tpcc, tpch, tatp, wikipedia,
                                resourcestresser, twitter, epinions, ycsb,
                                seats, auctionmark, chbenchmark, voter,
                                sibench, noop, smallbank, hyadapt]
 -c,--config <arg>              [required] Workload configuration file
    --clear <arg>               Clear all records in the database for this
                                benchmark
    --create <arg>              Initialize the database for this benchmark
 -d,--directory <arg>           Base directory for the result files,
                                default is current directory
    --dialects-export <arg>     Export benchmark SQL to a dialects file
    --execute <arg>             Execute the benchmark workload
 -h,--help                      Print this help
 -im,--interval-monitor <arg>   Throughput Monitoring Interval in
                                milliseconds
    --load <arg>                Load data using the benchmark's data
                                loader
 -s,--sample <arg>              Sampling window

How to Enable Logging

To enable logging, e.g., for the PostgreSQL JDBC driver, add the following JVM property when starting...

-Djava.util.logging.config.file=src/main/resources/logging.properties

To modify the logging level you can update logging.properties and/or log4j.properties.

How to Release

./mvnw -B release:prepare
./mvnw -B release:perform

How to Add Support for a New Database

Please see the existing MySQL and PostgreSQL code for an example.


Contributing

We welcome all contributions! Please open a pull request. Common contributions may include:

  • Adding support for a new DBMS.
  • Adding more tests of existing benchmarks.
  • Fixing any bugs or known issues.

Known Issues

Please use GitHub's issue tracker for all issues.

Credits

BenchBase is the official modernized version of the original OLTPBench.

The original OLTPBench code was largely written by the authors of the original paper, OLTP-Bench: An Extensible Testbed for Benchmarking Relational Databases, D. E. Difallah, A. Pavlo, C. Curino, and P. Cudré-Mauroux. In VLDB 2014. Please see the citation guide below.

A significant portion of the modernization was contributed by Tim Veil @ Cockroach Labs, including but not limited to:

  • Built with and for Java 11.
  • Migration from Ant to Maven.
    • Reorganized project to fit Maven structure.
    • Removed static lib directory and dependencies.
    • Updated required dependencies and removed unused or unwanted dependencies.
    • Moved all non .java files to standard Maven resources directory.
    • Shipped with Maven Wrapper.
  • Improved packaging and versioning.
    • Moved to Calendar Versioning (https://calver.org/).
    • Project is now distributed as a .tgz or .zip with an executable .jar.
    • All code updated to read resources from inside .jar instead of directory.
  • Moved from direct dependence on Log4J to SLF4J.
  • Reorganized and renamed many files for clarity and consistency.
  • Applied countless fixes based on "Static Analysis".
    • JDK migrations (boxing, un-boxing, etc.).
    • Implemented try-with-resources for all java.lang.AutoCloseable instances.
    • Removed calls to printStackTrace() or System.out.println in favor of proper logging.
  • Reformatted code and cleaned up imports.
  • Removed all calls to assert.
  • Removed various forms of dead code and stale configurations.
  • Removed calls to commit() during Loader operations.
  • Refactored Worker and Loader usage of Connection objects and cleaned up transaction handling.
  • Introduced HikariCP as connection pool and DataSource instead of building connections from DriverManager as needed (default poolsize is 12).
  • Introduced Dependabot to keep Maven dependencies up to date.
  • Simplified output flags by removing most of them, generally leaving the reporting functionality enabled by default.
  • Provided an alternate Catalog that can be populated directly from the configured Benchmark database. The old catalog was proxied through HSQLDB -- this remains an option for DBMSes that may have incomplete catalog support.

Citing This Repository

If you use this repository in an academic paper, please cite this repository:

D. E. Difallah, A. Pavlo, C. Curino, and P. Cudré-Mauroux, "OLTP-Bench: An Extensible Testbed for Benchmarking Relational Databases," PVLDB, vol. 7, iss. 4, pp. 277-288, 2013.

The BibTeX is provided below for convenience.

@article{DifallahPCC13,
  author = {Djellel Eddine Difallah and Andrew Pavlo and Carlo Curino and Philippe Cudr{\'e}-Mauroux},
  title = {OLTP-Bench: An Extensible Testbed for Benchmarking Relational Databases},
  journal = {PVLDB},
  volume = {7},
  number = {4},
  year = {2013},
  pages = {277--288},
  url = {http://www.vldb.org/pvldb/vol7/p277-difallah.pdf},
 }
Comments
  • Add docker image, devcontainer, and editorconfig support

    Add docker image, devcontainer, and editorconfig support

    Here's a simple PR to add support for developing inside a container either with VSCode or Github Codespaces. This makes it a little quicker/easier to get all the necessary dependencies for building the project without bloating the rest of the dev environment.

    It also adds very basic EditorConfig support for setting very basic editor tweaks for the repo's coding style (I tried to make them match the existing styles).

    Update: also adds support for building a benchbase docker image that can be used for easy deployment for distributed benchmarking and some pipeline test cases for building it. This does not yet handle publishing the image to a known container image repository for docker pull support yet though.

    opened by bpkroth 12
  • fixes issue #76; tpcc key time and wait time

    fixes issue #76; tpcc key time and wait time

    I added "keying time" and "wait time" configuration options to the *_config.xml and applied these changes throughout. In addition I attempted to clean up the TPCC procedure code. Much of this code had very large methods that opened and closed many prepared statements inside a single method. I found these methods very hard to read and troubleshoot. Much of my changes inside the tpcc package were to these procedure classes where I extracted methods to operate on a single prepared statement. I recognize that comparing these changes will be a bit difficult but I'm confident the behavior should remain the same. In addition I did some method and variable renaming for clarity. Examples of this include renaming methods on the com.oltpbenchmark.util.ResultUploader and renaming variables to include their time type (int[] values to int[] valuesAsMicroseconds). I also cleaned up some logging output and fixed misspellings. This PR closes #76.

    ready-for-review 
    opened by timveil 9
  • Spanner Support

    Spanner Support

    Closes #47.


    related to issue #47

    i've added basic spanner support and specifically added configuration for the ycsb benchmark. Testing was done using Spanner's emulator Docker image. I've included a readme that describes the configuration and usage of the Emulator. This should now allow interested parties to easily add additional benchmark configurations for Spanner.

    opened by timveil 8
  • Error on Crreating SEATS benchmark table

    Error on Crreating SEATS benchmark table

    Hi again, Similar the previous issue I posted, running "seats" benchmark on MySQL db fails even at "CREATING" phase. The main thing modified in the default config script is the scale factor. I have set it to 100. After making tables with about 5GBs of space, creation phase failed with following errors.

    [INFO ] 2021-09-15 01:02:43,297 [main]  com.oltpbenchmark.DBWorkload main - Loading data into SEATS database...
    Exception in thread "main" java.lang.RuntimeException: Failed to execute threads: Failed to load data files for scaling-sized table 'flight'
            at com.oltpbenchmark.util.ThreadUtil.run(ThreadUtil.java:106)
            at com.oltpbenchmark.util.ThreadUtil.runNewPool(ThreadUtil.java:70)
            at com.oltpbenchmark.api.BenchmarkModule.loadDatabase(BenchmarkModule.java:286)
            at com.oltpbenchmark.DBWorkload.runLoader(DBWorkload.java:598)
            at com.oltpbenchmark.DBWorkload.main(DBWorkload.java:418)
    Caused by: java.lang.RuntimeException: Failed to load data files for scaling-sized table 'flight'
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader.loadScalingTable(SEATSLoader.java:497)
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader$8.load(SEATSLoader.java:307)
            at com.oltpbenchmark.api.LoaderThread.run(LoaderThread.java:45)
            at com.oltpbenchmark.util.ThreadUtil$LatchRunnable.run(ThreadUtil.java:139)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
            at java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: java.lang.RuntimeException: Failed to load table flight
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader.loadTable(SEATSLoader.java:638)
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader.loadScalingTable(SEATSLoader.java:495)
            ... 6 more
    Caused by: java.lang.IllegalArgumentException: FlightId value at position 3 is 65538. Max value is 65535
    
            at com.oltpbenchmark.util.CompositeId.encode(CompositeId.java:60)
            at com.oltpbenchmark.benchmarks.seats.util.FlightId.encode(FlightId.java:86)
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader$FlightIterable.specialValue(SEATSLoader.java:1358)
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader$ScalingDataIterable$1.next(SEATSLoader.java:841)
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader$ScalingDataIterable$1.next(SEATSLoader.java:827)
            at com.oltpbenchmark.benchmarks.seats.SEATSLoader.loadTable(SEATSLoader.java:550)
    

    Any ideas would be welcomed. Thanks

    opened by amingit21 7
  • The isolation level and general query log

    The isolation level and general query log

    Hi,

    In the XML configuration file, if we have the following isolation level for TPCC:

    <isolation>TRANSACTION_SERIALIZABLE</isolation>

    And if we have two transactions issued as follows:

    t=1: Payment t=2: Delivery

    Then, in the MySQL database system's general query log, all sub-queries of the Payment transaction (t=1) will appear before all sub-queries of the Delivery transaction (t=2). Is this correct? (In other words, the order of the sub-queries of any two transactions cannot be mixed in case of TRANSACTION_SERIALIZABLE, right?)

    question 
    opened by gogo9th 6
  • Add CockroachDB to CI.

    Add CockroachDB to CI.

    CockroachDB has a docker image: https://hub.docker.com/r/cockroachdb/cockroach/

    We may be able to integrate this into our GitHub Actions workflow: https://github.com/cmu-db/benchbase/blob/main/.github/workflows/maven.yml

    help wanted 
    opened by lmwnshn 6
  • SQLServer: Cannot open database

    SQLServer: Cannot open database "benchbase_tpcc" requested by the login.

    Hi,

    I am having some issues with SQLServer running TPC-C on my system. I used the sample config found on "config/sqlserver/sample_tpcc_config.xml" and issued:

    java -jar benchbase.jar -b tpcc -c config/sqlserver/sample_tpcc_config.xml --create=true --load=true --execute=true

    (from the sample config I just changed the login/password entry in there to match my system. The server is active and running. I can log into from SQL Server Management Studio, etc.)

    After running the java command, I get the following message below (how to debug this? Is there a way to enable more verbose logging messages?)

    [INFO ] 2022-07-11 10:05:50,140 [main] com.oltpbenchmark.DBWorkload main - ====================================================================== [INFO ] 2022-07-11 10:05:50,303 [main] com.oltpbenchmark.DBWorkload main - Creating new TPCC database... [ERROR] 2022-07-11 10:06:04,902 [main] com.oltpbenchmark.DBWorkload main - Unexpected error when creating benchmark database tables. com.microsoft.sqlserver.jdbc.SQLServerException: Cannot open database "benchbase_tpcc" requested by the login. The login failed. ClientConnectionId:fc0233f3-894c-4cf1-9ccb-c992225c07c8 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:265) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:299) at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:132) at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:37) at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:6162) at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:4785) at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:4723) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7785) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3793) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:3233) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2833) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2671) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1640) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:936) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229) at com.oltpbenchmark.api.BenchmarkModule.makeConnection(BenchmarkModule.java:86) at com.oltpbenchmark.api.BenchmarkModule.createDatabase(BenchmarkModule.java:211) at com.oltpbenchmark.DBWorkload.runCreator(DBWorkload.java:626) at com.oltpbenchmark.DBWorkload.main(DBWorkload.java:405)

    opened by vpetrucci 5
  • Glitch phenomenon during testing

    Glitch phenomenon during testing

    Hi Guys, excellent tool. Could you tell me how the glitch phenomenon appears during testing? I want to execute the TPC-C benchmark by PostgreSQL.

    I generate the database data in advance and loop the following command to run a quick start. I run it on a single computer and use the default config.xml.

    java -jar benchbase.jar -b tpcc -c config/postgres/sample_tpcc_config.xml --execute=true

    <!-- The workload -->
    <terminals>1</terminals>
    <works>
        <work>
            <time>60</time>
            <rate>10000</rate>
            <weights>45,43,4,4,4</weights>
        </work>
    </works>
    

    4-9-result-1

    The red line in Fig1 is the throughput, while the blue line is the system's latency. I ran the TPC-C benchmark without modifying any parameters 60 times. Experimental results show large fluctuations in throughput and latency. I wonder why they happen.

    Thanks for help.

    wontfix 
    opened by CES-dengzeyuan 5
  • Bump hsqldb from 2.6.0 to 2.6.1

    Bump hsqldb from 2.6.0 to 2.6.1

    Bumps hsqldb from 2.6.0 to 2.6.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 5
  • docker build image --> addgroup: The GID `0' is already in use

    docker build image --> addgroup: The GID `0' is already in use

    When using Docker script "./docker/benchbase/build-full-image.sh", the "RUN addgroup ..." command fails with the following msg "addgroup: The GID `0' is already in use." A quick and dirty fix was to change these ARG variables as follows: ARG U_ID=1000 ARG G_ID=1000 System used was Alma Linux 9 (podman-docker: 4.0.2-7)

    bug 
    opened by vpetrucci 4
  • Could not complete Mojo execution...

    Could not complete Mojo execution...

    after: git clone --depth 1 https://github.com/cmu-db/benchbase.git cd benchbase ./mvnw clean package

    Returns: [INFO] Scanning for projects... [INFO] [INFO] --------------------< com.oltpbenchmark:benchbase >--------------------- [INFO] Building BenchBase 2021-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ benchbase --- [INFO] [INFO] --- git-commit-id-plugin:4.9.10:revision (get-the-git-infos) @ benchbase --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.059 s [INFO] Finished at: 2021-12-29T11:10:32-05:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal pl.project13.maven:git-commit-id-plugin:4.9.10:revision (get-the-git-infos) on project benchbase: Could not complete Mojo execution...: pl.project13.core.NativeGitProvider$NativeCommandException: Git command exited with invalid status [128]: directory: /root/benchbase, command: git log -1 --pretty=format:%an --no-show-signature HEAD, stdout: ``, stderr: fatal: unrecognized argument: --no-show-signature -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

    bug 
    opened by sigterm9kill 4
  • Fix docker entrypoint script so that it handles signals

    Fix docker entrypoint script so that it handles signals

    This is a minor tweak to the docker image entrypoint script so that pid 1 in the container becomes the java process running the benchbase jar. This is important so that when docker stop or kubectl delete is executed and a SIGTERM is delivered to pid 1 in the container, the bash script is no longer responsible for handling and passing the signal on to the child processes (e.g. java). Without this, the container runtime needs to wait for the timeout and issue a SIGKILL before the java process ends.

    opened by bpkroth 0
  • Bump google-cloud-spanner-jdbc from 2.6.1 to 2.9.0

    Bump google-cloud-spanner-jdbc from 2.6.1 to 2.9.0

    Bumps google-cloud-spanner-jdbc from 2.6.1 to 2.9.0.

    Release notes

    Sourced from google-cloud-spanner-jdbc's releases.

    v2.9.0

    2.9.0 (2022-12-14)

    Features

    • Add tests for DML with Returning clause (#936) (8a86467)

    Dependencies

    • Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.1.0 (#1069) (c2ff33a)
    • Update dependency com.google.cloud:google-cloud-spanner-bom to v6.34.1 (#1072) (0045a5e)

    v2.8.0

    2.8.0 (2022-11-17)

    Features

    Dependencies

    • Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.6 (#1044) (3b00962)
    • Update dependency com.google.cloud:google-cloud-spanner-bom to v6.33.0 (#1051) (e728ac1)
    • Update dependency io.perfmark:perfmark-api to v0.26.0 (#1045) (87d578c)

    v2.7.13

    2.7.13 (2022-10-31)

    Dependencies

    • Update dependency com.google.cloud:google-cloud-spanner-bom to v6.32.0 (#1033) (bbbd2c6)

    v2.7.12

    2.7.12 (2022-10-27)

    Bug Fixes

    • java: Initialize classes at build-time to address native image 22.2.0 issues (#1026) (8010da5)

    v2.7.11

    2.7.11 (2022-10-20)

    Dependencies

    ... (truncated)

    Changelog

    Sourced from google-cloud-spanner-jdbc's changelog.

    2.9.0 (2022-12-14)

    Features

    • Add tests for DML with Returning clause (#936) (8a86467)

    Dependencies

    • Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.1.0 (#1069) (c2ff33a)
    • Update dependency com.google.cloud:google-cloud-spanner-bom to v6.34.1 (#1072) (0045a5e)

    2.8.0 (2022-11-17)

    Features

    Dependencies

    • Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.6 (#1044) (3b00962)
    • Update dependency com.google.cloud:google-cloud-spanner-bom to v6.33.0 (#1051) (e728ac1)
    • Update dependency io.perfmark:perfmark-api to v0.26.0 (#1045) (87d578c)

    2.7.13 (2022-10-31)

    Dependencies

    • Update dependency com.google.cloud:google-cloud-spanner-bom to v6.32.0 (#1033) (bbbd2c6)

    2.7.12 (2022-10-27)

    Bug Fixes

    • java: Initialize classes at build-time to address native image 22.2.0 issues (#1026) (8010da5)

    2.7.11 (2022-10-20)

    Dependencies

    • Update dependency org.graalvm.buildtools:junit-platform-native to v0.9.16 (#1017) (ee7888c)
    • Update dependency org.graalvm.buildtools:native-maven-plugin to v0.9.16 (#1018) (3d5b100)

    2.7.10 (2022-10-18)

    ... (truncated)

    Commits
    • e5dfac7 chore(main): release 2.9.0 (#1057)
    • c2ff33a deps: update dependency com.google.cloud:google-cloud-shared-dependencies to ...
    • 0045a5e deps: update dependency com.google.cloud:google-cloud-spanner-bom to v6.34.1 ...
    • 319ac9a build(deps): bump certifi from 2022.9.24 to 2022.12.7 in /synthtool/gcp/templ...
    • 1bd7da7 build(deps): bump certifi from 2022.9.24 to 2022.12.7 in /.kokoro (#1070)
    • 4dd7386 build(deps): update dependency com.google.cloud:google-cloud-shared-config to...
    • 94e4d3c chore: upgrade native image checks to graalvm-22.3.0 (#1718) (#1066)
    • 8a86467 feat: add tests for DML with Returning clause (#936)
    • 9016c38 chore(deps): update dependency com.google.cloud:libraries-bom to v26.1.5 (#1056)
    • 58758d3 chore(deps): update dependency com.google.cloud:google-cloud-spanner-jdbc to ...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • TPC-H schema contains many extra indexes

    TPC-H schema contains many extra indexes

    I've noticed that TPC-H schema contains many extra indexes (for quite some tables). Here is an example: line item table has at least 6 extra indexes:

    https://github.com/cmu-db/benchbase/blob/main/src/main/resources/benchmarks/tpch/ddl-postgres.sql#L125-L130

    Where are these indexes came from? I've tried to read the tpc-h description but couldn't find one. I must be blind today.

    Looking at HammerDB, for example (this is just another popular tool, not a gold standard, of course) https://github.com/TPC-Council/HammerDB/blob/master/src/mariadb/mariaolap.tcl#L194-L215

    it has some indexes, but not 6.

    opened by mariadb-DmitryVolkov 0
  • Results files aren't written during error

    Results files aren't written during error

    If I run a benchmark and an error occurs in the middle no results files are written.

    For example, say this is expected to run for 1 hour with <time>3600</time>, and at 00:00:00 I start:

    java -jar benchbase.jar -b tpcc -c ....
    

    Say at time 00:00:59 I get a exception:

    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
    

    In this case, nothing at all is written to file, and I lose 59 minutes of throughput/latency/etc data for that run. This could be useful for debugging for running experiments.

    Would it be possible to change things so at least partial results files are written/flushed at the end before exiting? Maybe some flushes or intermediate writes? Or is the concern that this would hurt performance?

    opened by ksaur 0
Owner
CMU Database Group
Database Research Group at Carnegie Mellon University
CMU Database Group
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters.

sql2o Sql2o is a small java library, with the purpose of making database interaction easy. When fetching data from the database, the ResultSet will au

Lars Aaberg 1.1k Dec 28, 2022
🚀flink-sql-submit is a custom SQL submission client

??flink-sql-submit is a custom SQL submission client This is a customizable extension of the client, unlike flink's official default client.

ccinn 3 Mar 28, 2022
光 HikariCP・A solid, high-performance, JDBC connection pool at last.

HikariCP It's Faster.Hi·ka·ri [hi·ka·'lē] (Origin: Japanese): light; ray. Fast, simple, reliable. HikariCP is a "zero-overhead" production ready JDBC

Brett Wooldridge 17.7k Jan 1, 2023
Vibur DBCP - concurrent and dynamic JDBC connection pool

Vibur DBCP is concurrent, fast, and fully-featured JDBC connection pool, which provides advanced performance monitoring capabilities, including slow S

Vibur 94 Apr 20, 2022
JDBC driver for ClickHouse

This is a basic and restricted implementation of jdbc driver for ClickHouse. It has support of a minimal subset of features to be usable.

ClickHouse 1.1k Jan 1, 2023
Provides many useful CRUD, Pagination, Sorting operations with Thread-safe Singleton support through the native JDBC API.

BangMapleJDBCRepository Inspired by the JpaRepository of Spring framework which also provides many capabilities for the CRUD, Pagination and Sorting o

Ngô Nguyên Bằng 5 Apr 7, 2022
Core ORMLite functionality that provides a lite Java ORM in conjunction with ormlite-jdbc or ormlite-android

ORMLite Core This package provides the core functionality for the JDBC and Android packages. Users that are connecting to SQL databases via JDBC shoul

Gray 547 Dec 25, 2022
SPRING MySQL Database Connection using JDBC STEPS

SPRING-MySQL-Database-Connection-using-JDBC-STEPS SPRING MySQL Database Connection using JDBC STEPS Step1: Create maven project Group id: com.cdac Art

Dnyaneshwar Madhewad 1 Jan 27, 2022
Amazon AppFlow Custom JDBC Connector example

Amazon AppFlow Custom JDBC Connector example This project contains source code and supporting files that implements Amazon Custom Connector SDK and re

AWS Samples 6 Oct 26, 2022
Online Quiz system - JDBC, JSP

Online-Quiz-System-in-Java Online Quiz system - JDBC, JSP Java Project based on JDBC, JSP, Java Servlet and Server Deployment Project Aim Develop web

Muhammad Asad 6 Oct 14, 2022
Hi, Spring fans! In this installment, we'll look at how to build tenancy-aware JDBC applications

Multitenant JDBC You'll need to spin up two separate PostgreSQL instances. Put this script into a file called postgres.sh: #!/usr/bin/env bash NAME=${

Spring Tips 19 Nov 7, 2022
esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.

esProc esProc is the unique name for esProc SPL package. esProc SPL is an open-source programming language for data processing, which can perform comp

null 990 Dec 27, 2022
A JDBC driver for Cloudflare's D1 product, compatible with Jetbrains tools.

D1 JDBC Driver A JDBC driver for Cloudflare's D1 Database product! JDBC is the technology that drives popular database tools such as Jetbrains' databa

Isaac McFadyen 21 Dec 9, 2022
Database with Java Swing UI that stores consumables (food & drink) using RESTful API to send commands via HTTP

Database with Java Swing UI that stores consumables (food & drink) using RESTful API to send commands via HTTP.

Bryan 2 Mar 8, 2022
Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)

Trino is a fast distributed SQL query engine for big data analytics. See the User Manual for deployment instructions and end user documentation. Devel

Trino 6.9k Dec 31, 2022
requery - modern SQL based query & persistence for Java / Kotlin / Android

A light but powerful object mapping and SQL generator for Java/Kotlin/Android with RxJava and Java 8 support. Easily map to or create databases, perfo

requery 3.1k Jan 5, 2023
The official home of the Presto distributed SQL query engine for big data

Presto Presto is a distributed SQL query engine for big data. See the User Manual for deployment instructions and end user documentation. Requirements

Presto 14.3k Dec 30, 2022
jOOQ is the best way to write SQL in Java

jOOQ's reason for being - compared to JPA Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java

jOOQ Object Oriented Querying 5.3k Jan 4, 2023
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time.

About CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time. CrateDB offers the

Crate.io 3.6k Jan 2, 2023