September 16, 2014

MySQL Optimizer team comments on TPC-H Results

Yesterday I had a chance to speak to Igor – head of MySQL optimizer team and Timur – both of them expressed concern with TPC-H run results I posted and notes about little gains in MySQL 6.0.

Do not get this post wrong. I’m not saying MySQL 6.0 SubQuery optimizations are non existent or priorities were wrong, what I’m saying is just they do not seems to be apply to most of TPC-H Queries. I personally (before doing what exactly queries are part of TPC-H) was expecting to see gains in TPC-H and I think this is what other users would expect as well because this is well known set of complex queries which use SubQueries.

So what is the reason ? Why TPC-H queries are not targeted ?

The reason is MySQL Optimizer Team did not have the goal of optimizing TPC-H queries or queries from any other benchmarks, rather they look at the queries which MySQL Users have problem with and first target the most common issues. I think this is a great approach to pick what needs to be done first.

Another reason is “Derived Tables” AKA “Subselects in FROM Clause” are not optimized yet even though some optimizations may make it into final MySQL 6.0 release.

Summary: Poor MySQL 6.0 performance on TPC-H queries does NOT mean to quantify MySQL Optimizer Team work in any way:)

About Peter Zaitsev

Peter managed the High Performance Group within MySQL until 2006, when he founded Percona. Peter has a Master's Degree in Computer Science and is an expert in database kernels, computer hardware, and application scaling.

Comments

  1. Tácio Castanhede says:

    Bom dia,

    Estou tentando realizar o make do TPC-h, para gerar as bases e dá o seguinte erro:

    chmod 755 update_release.sh
    ./update_release.sh 2 7 0
    gcc -O -DDBNAME=\”dss\” -DICL -DMYSQL -DTPCH -c -o build.o build.c
    In file included from dss.h:81,
    from build.c:50:
    config.h:213:2: error: #error Support for a 64-bit datatype is required in this release
    In file included from build.c:50:
    dss.h:178: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dss.h:189: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dss.h:221: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘set_state’
    dss.h:224: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘NextRand’
    dss.h:225: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘UnifInt’
    dss.h:226: error: expected ‘)’ before ‘*’ token
    In file included from build.c:51:
    dsstypes.h:43: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:55: error: expected ‘)’ before ‘n_cust’
    dsstypes.h:61: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:82: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:97: error: expected ‘)’ before ‘index’
    dsstypes.h:100: error: expected ‘)’ before ‘index’
    dsstypes.h:104: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:114: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:130: error: expected ‘)’ before ‘index’
    dsstypes.h:136: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:147: error: expected ‘)’ before ‘index’
    dsstypes.h:153: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:162: error: expected ‘)’ before ‘h’
    dsstypes.h:169: error: expected specifier-qualifier-list before ‘DSS_HUGE’
    dsstypes.h:177: error: expected ‘)’ before ‘i’
    dsstypes.h:180: error: expected ‘)’ before ‘i’
    In file included from build.c:56:
    rng64.h:21: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘AdvanceRand64’
    rng64.h:22: error: expected ‘)’ before ‘*’ token
    rng64.h:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘NextRand64’
    build.c:71: error: expected ‘)’ before ‘ind’
    build.c:74: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rpb_routine’
    build.c:86: error: expected ‘)’ before ‘ind’
    build.c:108: error: expected ‘)’ before ‘n_cust’
    build.c:139: error: expected ‘)’ before ‘i’
    build.c:156: error: expected ‘)’ before ‘index’
    build.c:279: error: expected ‘)’ before ‘index’
    build.c:322: error: expected ‘)’ before ‘index’
    build.c:396: error: expected ‘)’ before ‘index’
    build.c:418: error: expected ‘)’ before ‘index’
    build.c:429: error: expected ‘)’ before ‘index’
    make: ** [build.o] Erro 1

    O que pode ser?

    Obrigado.

Speak Your Mind

*