| 12345678910111213141516171819202122232425262728293031323334353637383940 | const { createPool, createConnection } = require( 'mysql2/promise' );const cpus = require( 'os' ).cpus().lengthlet clientOpts = {    host: process.env.DB_HOST || 'localhost',    user: 'benchmarkdbuser',    password: 'benchmarkdbpass',    database: 'hello_world'};let poolconst execute = async ( text, values ) => ( await pool.execute( text, values || undefined ) )[0]module.exports = {    async init() {        const client = await createConnection( clientOpts )        const res = await client.query( 'SHOW VARIABLES LIKE "max_connections"' )        let maxConnections = Math.floor( res[0][0].Value * 0.9 / cpus )        //1 worker per cpu, each worker pool gets a fraction of the max connections        //only use 90% to avoid too many clients errors        pool = createPool( Object.assign( { ...clientOpts }, { max: maxConnections } ) )        await client.end()    },    allFortunes: async () =>        execute( 'SELECT * FROM fortune' ),    worldById: async ( id ) =>        execute( 'SELECT * FROM world WHERE id = ?', [id] )            .then( arr => arr[0] ),    allWorlds: async () =>        execute( 'SELECT * FROM world' ),    bulkUpdateWorld: async worlds => Promise.all(        worlds.map( world =>            execute( 'UPDATE world SET randomnumber = ? WHERE id = ?',                [world.randomnumber, world.id] ) )    ).then( () => worlds )}
 |