From 34d9050d5f4ccce3d84d17e6929acc3ffc739749 Mon Sep 17 00:00:00 2001 From: Zhang Jian Date: Fri, 16 Nov 2018 11:59:34 +0800 Subject: [PATCH] sessionctx: make tidb_max_chunk_size as a global variable (#6585) (#8333) --- session/session.go | 1 + session/session_test.go | 4 ++++ sessionctx/variable/sysvar.go | 2 +- sessionctx/variable/tidb_vars.go | 6 +++--- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/session/session.go b/session/session.go index e6628bac3304a..ded51d43b3af1 100644 --- a/session/session.go +++ b/session/session.go @@ -1297,6 +1297,7 @@ const loadCommonGlobalVarsSQL = "select HIGH_PRIORITY * from mysql.global_variab variable.TiDBHashJoinConcurrency + quoteCommaQuote + variable.TiDBDDLReorgWorkerCount + quoteCommaQuote + variable.TiDBDistSQLScanConcurrency + quoteCommaQuote + + variable.TiDBMaxChunkSize + quoteCommaQuote + variable.TiDBDisableTxnAutoRetry + "')" // loadCommonGlobalVariablesIfNeeded loads and applies commonly used global variables for the session. diff --git a/session/session_test.go b/session/session_test.go index ef4051ddaeaf8..9aa44565857b9 100644 --- a/session/session_test.go +++ b/session/session_test.go @@ -1650,6 +1650,10 @@ func (s *testSchemaSuite) TestTableReaderChunk(c *C) { s.cluster.SplitTable(s.mvccStore, tbl.Meta().ID, 10) tk.Se.GetSessionVars().DistSQLScanConcurrency = 1 + tk.MustExec("set tidb_max_chunk_size = 2") + defer func() { + tk.MustExec(fmt.Sprintf("set tidb_max_chunk_size = %d", variable.DefMaxChunkSize)) + }() rs, err := tk.Exec("select * from chk") c.Assert(err, IsNil) chk := rs.NewChunk() diff --git a/sessionctx/variable/sysvar.go b/sessionctx/variable/sysvar.go index b7df726523d21..5ccb70ea78f58 100644 --- a/sessionctx/variable/sysvar.go +++ b/sessionctx/variable/sysvar.go @@ -626,7 +626,7 @@ var defaultSysVars = []*SysVar{ {ScopeSession, TiDBBatchDelete, boolToIntStr(DefBatchDelete)}, {ScopeSession, TiDBDMLBatchSize, strconv.Itoa(DefDMLBatchSize)}, {ScopeSession, TiDBCurrentTS, strconv.Itoa(DefCurretTS)}, - {ScopeSession, TiDBMaxChunkSize, strconv.Itoa(DefMaxChunkSize)}, + {ScopeGlobal | ScopeSession, TiDBMaxChunkSize, strconv.Itoa(DefMaxChunkSize)}, {ScopeSession, TIDBMemQuotaQuery, strconv.FormatInt(config.GetGlobalConfig().MemQuotaQuery, 10)}, {ScopeSession, TIDBMemQuotaHashJoin, strconv.FormatInt(DefTiDBMemQuotaHashJoin, 10)}, {ScopeSession, TIDBMemQuotaMergeJoin, strconv.FormatInt(DefTiDBMemQuotaMergeJoin, 10)}, diff --git a/sessionctx/variable/tidb_vars.go b/sessionctx/variable/tidb_vars.go index 171c27e0ad7ca..82736efa5c569 100644 --- a/sessionctx/variable/tidb_vars.go +++ b/sessionctx/variable/tidb_vars.go @@ -78,9 +78,6 @@ const ( // User could change it to a smaller one to avoid breaking the transaction size limitation. TiDBDMLBatchSize = "tidb_dml_batch_size" - // tidb_max_chunk_capacity is used to control the max chunk size during query execution. - TiDBMaxChunkSize = "tidb_max_chunk_size" - // The following session variables controls the memory quota during query execution. // "tidb_mem_quota_query": control the memory quota of a query. // "tidb_mem_quota_hashjoin": control the memory quota of "HashJoinExec". @@ -149,6 +146,9 @@ const ( // when we need to keep the data output order the same as the order of index data. TiDBIndexSerialScanConcurrency = "tidb_index_serial_scan_concurrency" + // tidb_max_chunk_capacity is used to control the max chunk size during query execution. + TiDBMaxChunkSize = "tidb_max_chunk_size" + // tidb_skip_utf8_check skips the UTF8 validate process, validate UTF8 has performance cost, if we can make sure // the input string values are valid, we can skip the check. TiDBSkipUTF8Check = "tidb_skip_utf8_check"