from .tuner import Tuner class RuleTuner(Tuner): def __init__(self, instances): self.instances = instances self.TIDB_RULES = { "global.tidb_hashagg_final_concurrency": "1", "global.tidb_hashagg_partial_concurrency": "1", "global.tidb_enable_async_commit": "1", "global.tidb_enable_1pc": "1", "global.tidb_guarantee_linearizability": "0", "global.tidb_enable_clustered_index": "1", "tidb.log.level": "error", "tidb.prepared-plan-cache.enabled": "true", "tidb.tikv-client.max-batch-wait-time": "2000000", "tikv.storage.scheduler-worker-pool-size": "4", "tikv.raftstore.store-pool-size": "2", "tikv.raftstore.apply-pool-size": "2", "tikv.rocksdb.max-background-jobs": "8", "tikv.raftdb.max-background-jobs": "4", "tikv.raftdb.allow-concurrent-memtable-write": "true", "tikv.server.grpc-concurrency": "6", "tikv.readpool.storage.normal-concurrency": "10", "tikv.pessimistic-txn.pipelined": "true" } def tune(self): recommendation_parameters = {} for key, value in self.TIDB_RULES.items(): if key.startswith("global"): recommendation_parameters["(" + key[7:] + ")"] = value elif key.startswith("tidb"): for instance in self.instances["tidb"]: recommendation_parameters["(" + ",".join(["tidb", instance, key[5:]]) + ")"] = value elif key.startswith("tikv"): for instance in self.instances["tikv"]: recommendation_parameters["(" + ",".join(["tikv", instance, key[5:]]) + ")"] = value else: raise RuntimeError("Parameter '%s' is invalid" % key) return recommendation_parameters