Skip to content

Commit

Permalink
[misc] benchmark improvement to use same server charset.
Browse files Browse the repository at this point in the history
mysql/mysql2 use fixed UTF8_GENERAL_CI, in place of default utf8mb4 charset. This is now corrected.
  • Loading branch information
rusher committed Sep 12, 2023
1 parent 8d5271b commit a409b71
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
23 changes: 16 additions & 7 deletions benchmarks/common-bench.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@ try {
} catch (e) {}

//************************************************
// COMMON CONFIGURATION
// COMMON CONFIGURATION.
// Mysql and Mysql2 doesn't use server collation, but fixed collation UTF8_GENERAL_CI.
// setting it to default utf8mb4 collation, to be fair
//************************************************
const conf = require('../test/conf');
const logUtility = require('./log-utility');
const config = Object.assign({}, conf.baseConfig, { trace: false });
console.log(config);

let configWithCharset = null;
const minimumSamples = process.env.PERF_SAMPLES ? parseInt(process.env.PERF_SAMPLES) : 200;

//************************************************
Expand Down Expand Up @@ -90,22 +93,28 @@ const createBenchSuite = async (bench) => {
//************************************************
const loadsources = async (requiresPool, requireExecute, mariadbOnly) => {
const sources = {};
sources['mariadb'] = await mariadb.createConnection(Object.assign({}, config));
if (!configWithCharset && sources['mariadb'].info.collation) {
const collation = sources['mariadb'].info.collation.name;
configWithCharset = Object.assign({}, conf.baseConfig, { trace: false, charset: collation });
console.log(configWithCharset);
}

if (requiresPool == undefined || requiresPool === false) {
if (mysql) {
if (!mariadbOnly && (requireExecute == undefined || requireExecute === false)) {
sources['mysql'] = await mysql.createConnection(Object.assign({}, config));
sources['mysql'] = await mysql.createConnection(Object.assign({}, configWithCharset));
}
}
if (mysql2 && !mariadbOnly) {
sources['mysql2'] = await mysql2.createConnection(Object.assign({}, config));
sources['mysql2'] = await mysql2.createConnection(Object.assign({}, configWithCharset));
}
sources['mariadb'] = await mariadb.createConnection(Object.assign({}, config));
} else {
if (!mariadbOnly && mysql) {
sources['mysql'] = await mysql.createPool(Object.assign({ connectionLimit: 1 }, config));
sources['mysql'] = await mysql.createPool(Object.assign({ connectionLimit: 1 }, configWithCharset));
}
if (!mariadbOnly && mysql2) {
sources['mysql2'] = mysql2.createPool(Object.assign({ connectionLimit: 1 }, config));
sources['mysql2'] = mysql2.createPool(Object.assign({ connectionLimit: 1 }, configWithCharset));
}
}

Expand Down
4 changes: 3 additions & 1 deletion benchmarks/log-utility.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2015-2023 MariaDB Corporation Ab

'use strict';

const pjson = require('../package-lock.json');
const chalk = require('chalk');
const defaultImgJson = {
type: 'horizontalBar',
Expand Down

0 comments on commit a409b71

Please sign in to comment.