mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
be8709eb7b
This task involves the implementation for the optimizer trace. This feature produces a trace for any SELECT/UPDATE/DELETE/, which contains information about decisions taken by the optimizer during the optimization phase (choice of table access method, various costs, transformations, etc). This feature would help to tell why some decisions were taken by the optimizer and why some were rejected. Trace is session-local, controlled by the @@optimizer_trace variable. To enable optimizer trace we need to write: set @@optimizer_trace variable= 'enabled=on'; To display the trace one can run: SELECT trace FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; This task also involves: MDEV-18489: Limit the memory used by the optimizer trace introduces a switch optimizer_trace_max_mem_size which limits the memory used by the optimizer trace. This was implemented by Sergei Petrunia.
41 lines
1.6 KiB
C++
41 lines
1.6 KiB
C++
/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
|
|
|
#ifndef SQL_TEST_INCLUDED
|
|
#define SQL_TEST_INCLUDED
|
|
|
|
#include "mysqld.h"
|
|
#include "opt_trace_context.h"
|
|
|
|
class JOIN;
|
|
struct TABLE_LIST;
|
|
typedef class Item COND;
|
|
typedef class st_select_lex SELECT_LEX;
|
|
struct SORT_FIELD;
|
|
|
|
#ifndef DBUG_OFF
|
|
void print_where(COND *cond,const char *info, enum_query_type query_type);
|
|
void TEST_filesort(SORT_FIELD *sortorder,uint s_length);
|
|
void TEST_join(JOIN *join);
|
|
void print_plan(JOIN* join,uint idx, double record_count, double read_time,
|
|
double current_read_time, const char *info);
|
|
void print_keyuse_array(DYNAMIC_ARRAY *keyuse_array);
|
|
void print_sjm(SJ_MATERIALIZATION_INFO *sjm);
|
|
void dump_TABLE_LIST_graph(SELECT_LEX *select_lex, TABLE_LIST* tl);
|
|
#endif
|
|
void print_keyuse_array_for_trace(THD *thd, DYNAMIC_ARRAY *keyuse_array);
|
|
void mysql_print_status();
|
|
|
|
#endif /* SQL_TEST_INCLUDED */
|