1
diff -r 5060df9888d7 include/mysql_com.h
2
--- a/include/mysql_com.h Tue Feb 17 22:33:54 2009 -0800
3
+++ b/include/mysql_com.h Tue Feb 17 22:33:58 2009 -0800
5
#define REFRESH_QUERY_CACHE_FREE 0x20000L /* pack query cache */
1
diff -r d4826c0a98c2 include/mysql_com.h
2
--- a/include/mysql_com.h Wed Jul 29 09:58:58 2009 -0700
3
+++ b/include/mysql_com.h Wed Jul 29 10:00:12 2009 -0700
6
5
#define REFRESH_DES_KEY_FILE 0x40000L
7
6
#define REFRESH_USER_RESOURCES 0x80000L
9
8
+/* TRUNCATE INFORMATION_SCHEMA.INNODB_IO_PATTERN */
10
9
+#define REFRESH_INNODB_IO_PATTERN 0x1000000L
12
11
#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
13
12
#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */
14
diff -r 5060df9888d7 innobase/buf/buf0buf.c
15
--- a/innobase/buf/buf0buf.c Tue Feb 17 22:33:54 2009 -0800
16
+++ b/innobase/buf/buf0buf.c Tue Feb 17 22:33:58 2009 -0800
13
#define CLIENT_LONG_FLAG 4 /* Get all column flags */
14
diff -r d4826c0a98c2 innobase/buf/buf0buf.c
15
--- a/innobase/buf/buf0buf.c Wed Jul 29 09:58:58 2009 -0700
16
+++ b/innobase/buf/buf0buf.c Wed Jul 29 10:00:12 2009 -0700
20
20
buf_pool->page_hash = hash_create(2 * max_size);
148
148
+ mutex_exit(&(buf_pool->mutex));
150
diff -r 5060df9888d7 innobase/include/buf0buf.h
151
--- a/innobase/include/buf0buf.h Tue Feb 17 22:33:54 2009 -0800
152
+++ b/innobase/include/buf0buf.h Tue Feb 17 22:33:58 2009 -0800
150
diff -r d4826c0a98c2 innobase/include/buf0buf.h
151
--- a/innobase/include/buf0buf.h Wed Jul 29 09:58:58 2009 -0700
152
+++ b/innobase/include/buf0buf.h Wed Jul 29 10:00:12 2009 -0700
153
153
@@ -709,6 +709,18 @@
154
154
void buf_pool_dump(void);
155
155
buf_block_t* buf_pool_get_nth_block_no_inline(buf_pool_t* pool, ulint i);
195
195
/* States of a control block */
196
196
#define BUF_BLOCK_NOT_USED 211 /* is in the free list */
197
197
#define BUF_BLOCK_READY_FOR_USE 212 /* when buf_get_free_block returns
198
diff -r 5060df9888d7 innobase/include/buf0types.h
199
--- a/innobase/include/buf0types.h Tue Feb 17 22:33:54 2009 -0800
200
+++ b/innobase/include/buf0types.h Tue Feb 17 22:33:58 2009 -0800
198
diff -r d4826c0a98c2 innobase/include/buf0types.h
199
--- a/innobase/include/buf0types.h Wed Jul 29 09:58:58 2009 -0700
200
+++ b/innobase/include/buf0types.h Wed Jul 29 10:00:12 2009 -0700
201
201
@@ -12,6 +12,8 @@
202
202
typedef struct buf_block_struct buf_block_t;
203
203
typedef struct buf_pool_struct buf_pool_t;
207
207
/* The 'type' used of a buffer frame */
208
208
typedef byte buf_frame_t;
210
diff -r 5060df9888d7 innobase/include/srv0srv.h
211
--- a/innobase/include/srv0srv.h Tue Feb 17 22:33:54 2009 -0800
212
+++ b/innobase/include/srv0srv.h Tue Feb 17 22:33:58 2009 -0800
214
extern ulint srv_flush_neighbor_pages;
210
diff -r d4826c0a98c2 innobase/include/srv0srv.h
211
--- a/innobase/include/srv0srv.h Wed Jul 29 09:58:58 2009 -0700
212
+++ b/innobase/include/srv0srv.h Wed Jul 29 10:00:12 2009 -0700
214
extern ulint srv_enable_unsafe_group_commit;
215
215
extern uint srv_read_ahead;
216
extern ulint srv_adaptive_checkpoint;
216
extern uint srv_adaptive_checkpoint;
218
218
+extern volatile ibool srv_io_pattern;
219
219
+extern ulong srv_io_pattern_trace;
222
222
/*-------------------------------------------*/
224
224
extern ulint srv_n_rows_inserted;
225
diff -r 5060df9888d7 innobase/srv/srv0srv.c
226
--- a/innobase/srv/srv0srv.c Tue Feb 17 22:33:54 2009 -0800
227
+++ b/innobase/srv/srv0srv.c Tue Feb 17 22:33:58 2009 -0800
225
diff -r d4826c0a98c2 innobase/srv/srv0srv.c
226
--- a/innobase/srv/srv0srv.c Wed Jul 29 09:58:58 2009 -0700
227
+++ b/innobase/srv/srv0srv.c Wed Jul 29 10:00:12 2009 -0700
230
230
uint srv_read_ahead = 3; /* 1: random 2: linear 3: Both */
231
ulint srv_adaptive_checkpoint = 0; /* 0:disable 1:enable */
231
uint srv_adaptive_checkpoint = 0; /* 0: none 1: reflex 2: estimate */
233
233
+volatile ibool srv_io_pattern = FALSE;
234
234
+ulint srv_io_pattern_trace = 0;
237
237
/*-------------------------------------------*/
238
238
ulong srv_n_spin_wait_rounds = 20;
239
239
ulong srv_n_free_tickets_to_enter = 500;
240
diff -r 5060df9888d7 mysql-test/r/information_schema.result
241
--- a/mysql-test/r/information_schema.result Tue Feb 17 22:33:54 2009 -0800
242
+++ b/mysql-test/r/information_schema.result Tue Feb 17 22:33:58 2009 -0800
240
diff -r d4826c0a98c2 mysql-test/r/information_schema.result
241
--- a/mysql-test/r/information_schema.result Wed Jul 29 09:58:58 2009 -0700
242
+++ b/mysql-test/r/information_schema.result Wed Jul 29 10:00:12 2009 -0700
243
243
@@ -59,6 +59,7 @@
296
296
KEY_COLUMN_USAGE information_schema.KEY_COLUMN_USAGE 1
297
297
PROCESSLIST information_schema.PROCESSLIST 1
298
298
PROFILING information_schema.PROFILING 1
299
diff -r 5060df9888d7 mysql-test/r/information_schema_db.result
300
--- a/mysql-test/r/information_schema_db.result Tue Feb 17 22:33:54 2009 -0800
301
+++ b/mysql-test/r/information_schema_db.result Tue Feb 17 22:33:58 2009 -0800
299
diff -r d4826c0a98c2 mysql-test/r/information_schema_db.result
300
--- a/mysql-test/r/information_schema_db.result Wed Jul 29 09:58:58 2009 -0700
301
+++ b/mysql-test/r/information_schema_db.result Wed Jul 29 10:00:12 2009 -0700
302
302
@@ -28,6 +28,7 @@
307
307
show tables from INFORMATION_SCHEMA like 'T%';
308
308
Tables_in_information_schema (T%)
310
diff -r 5060df9888d7 mysql-test/r/mysqlshow.result
311
--- a/mysql-test/r/mysqlshow.result Tue Feb 17 22:33:54 2009 -0800
312
+++ b/mysql-test/r/mysqlshow.result Tue Feb 17 22:33:58 2009 -0800
310
diff -r d4826c0a98c2 mysql-test/r/mysqlshow.result
311
--- a/mysql-test/r/mysqlshow.result Wed Jul 29 09:58:58 2009 -0700
312
+++ b/mysql-test/r/mysqlshow.result Wed Jul 29 10:00:12 2009 -0700
313
313
@@ -102,6 +102,7 @@
314
314
| USER_PRIVILEGES |
315
315
| USER_STATISTICS |
326
326
+---------------------------------------+
327
327
Wildcard: inf_rmation_schema
328
328
+--------------------+
329
diff -r 5060df9888d7 patch_info/innodb_io_pattern.info
329
diff -r d4826c0a98c2 patch_info/innodb_io_pattern.info
330
330
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
331
+++ b/patch_info/innodb_io_pattern.info Tue Feb 17 22:33:58 2009 -0800
331
+++ b/patch_info/innodb_io_pattern.info Wed Jul 29 10:00:12 2009 -0700
333
333
+File=innodb_io_pattern.patch
334
334
+Name=Information schema table of InnoDB IO counts for each datafile pages
338
338
+Comment=INFORMATION_SCHEMA.INNODB_IO_PATTERN
340
340
+YK: fix for mysql-test
341
diff -r 5060df9888d7 sql/ha_innodb.cc
342
--- a/sql/ha_innodb.cc Tue Feb 17 22:33:54 2009 -0800
343
+++ b/sql/ha_innodb.cc Tue Feb 17 22:33:58 2009 -0800
344
@@ -1569,6 +1569,8 @@
341
diff -r d4826c0a98c2 sql/ha_innodb.cc
342
--- a/sql/ha_innodb.cc Wed Jul 29 09:58:58 2009 -0700
343
+++ b/sql/ha_innodb.cc Wed Jul 29 10:00:12 2009 -0700
344
@@ -1583,6 +1583,8 @@
345
345
pthread_cond_init(&commit_cond, NULL);
346
346
innodb_inited= 1;
350
350
/* If this is a replication slave and we needed to do a crash recovery,
351
351
set the master binlog position to what InnoDB internally knew about
352
352
how far we got transactions durable inside InnoDB. There is a
353
@@ -6535,6 +6537,28 @@
353
@@ -6551,6 +6553,28 @@
356
356
/****************************************************************************
379
379
Implements the SHOW INNODB STATUS command. Sends the output of the InnoDB
380
380
Monitor to the client. */
382
diff -r 5060df9888d7 sql/ha_innodb.h
383
--- a/sql/ha_innodb.h Tue Feb 17 22:33:54 2009 -0800
384
+++ b/sql/ha_innodb.h Tue Feb 17 22:33:58 2009 -0800
386
extern ulong srv_adaptive_checkpoint;
382
diff -r d4826c0a98c2 sql/ha_innodb.h
383
--- a/sql/ha_innodb.h Wed Jul 29 09:58:58 2009 -0700
384
+++ b/sql/ha_innodb.h Wed Jul 29 10:00:12 2009 -0700
386
extern uint srv_adaptive_checkpoint;
387
387
extern ulong srv_show_locks_held;
388
388
extern ulong srv_show_verbose_locks;
389
389
+extern ulong srv_io_pattern_trace;
390
390
+extern ulong srv_io_pattern_trace_running;
391
391
+extern ulong srv_io_pattern_size_limit;
394
bool innobase_init(void);
396
bool innodb_I_S_buffer_pool_content(THD* thd, TABLE_LIST *tables);
393
/* An option to enable the fix for "Bug#43660 SHOW INDEXES/ANALYZE does
394
NOT update cardinality for indexes of InnoDB table". By default we are
397
396
bool innodb_mutex_show_status(THD* thd);
398
397
void innodb_export_status(void);
400
399
+void innodb_io_pattern_control(void);
401
400
+void innodb_io_pattern_clear(void);
403
402
void innobase_release_temporary_latches(THD *thd);
405
diff -r 5060df9888d7 sql/lex.h
406
--- a/sql/lex.h Tue Feb 17 22:33:54 2009 -0800
407
+++ b/sql/lex.h Tue Feb 17 22:33:58 2009 -0800
404
void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offset);
405
diff -r d4826c0a98c2 sql/lex.h
406
--- a/sql/lex.h Wed Jul 29 09:58:58 2009 -0700
407
+++ b/sql/lex.h Wed Jul 29 10:00:12 2009 -0700
408
408
@@ -244,6 +244,7 @@
409
409
{ "INNER", SYM(INNER_SYM)},
410
410
{ "INNOBASE", SYM(INNOBASE_SYM)},
413
413
{ "INOUT", SYM(INOUT_SYM)},
414
414
{ "INSENSITIVE", SYM(INSENSITIVE_SYM)},
415
415
{ "INSERT", SYM(INSERT)},
416
diff -r 5060df9888d7 sql/mysqld.cc
417
--- a/sql/mysqld.cc Tue Feb 17 22:33:54 2009 -0800
418
+++ b/sql/mysqld.cc Tue Feb 17 22:33:58 2009 -0800
419
@@ -5026,6 +5026,9 @@
416
diff -r d4826c0a98c2 sql/mysqld.cc
417
--- a/sql/mysqld.cc Wed Jul 29 09:58:58 2009 -0700
418
+++ b/sql/mysqld.cc Wed Jul 29 10:00:12 2009 -0700
419
@@ -5029,6 +5029,9 @@
420
420
OPT_INNODB_SYNC_SPIN_LOOPS,
421
421
OPT_INNODB_CONCURRENCY_TICKETS,
422
422
OPT_INNODB_THREAD_SLEEP_DELAY,
426
426
OPT_BDB_CACHE_SIZE,
427
427
OPT_BDB_LOG_BUFFER_SIZE,
428
428
OPT_BDB_MAX_LOCK,
429
@@ -5445,6 +5448,18 @@
429
@@ -5461,6 +5464,18 @@
430
430
"Number of background write I/O threads in InnoDB.",
431
431
(gptr*) &innobase_write_io_threads, (gptr*) &innobase_write_io_threads,
432
0, GET_LONG, REQUIRED_ARG, 1, 1, 64, 0, 0, 0},
432
0, GET_LONG, REQUIRED_ARG, 8, 1, 64, 0, 0, 0},
433
433
+ {"innodb_io_pattern_trace", OPT_INNODB_IO_PATTERN_TRACE,
434
434
+ "Create/Drop the internal hash table for IO pattern tracing.",
435
435
+ (gptr*) &srv_io_pattern_trace, (gptr*) &srv_io_pattern_trace,
445
445
#endif /* End HAVE_INNOBASE_DB */
446
446
{"isam", OPT_ISAM, "Obsolete. ISAM storage engine is no longer supported.",
447
447
(gptr*) &opt_isam, (gptr*) &opt_isam, 0, GET_BOOL, NO_ARG, 0, 0, 0,
448
diff -r 5060df9888d7 sql/set_var.cc
449
--- a/sql/set_var.cc Tue Feb 17 22:33:54 2009 -0800
450
+++ b/sql/set_var.cc Tue Feb 17 22:33:58 2009 -0800
448
diff -r d4826c0a98c2 sql/set_var.cc
449
--- a/sql/set_var.cc Wed Jul 29 09:58:58 2009 -0700
450
+++ b/sql/set_var.cc Wed Jul 29 10:00:12 2009 -0700
452
452
sys_var_long_ptr sys_innodb_show_verbose_locks(
453
453
"innodb_show_verbose_locks",
454
454
&srv_show_verbose_locks);
461
461
sys_var_const_os_str_ptr sys_innodb_data_file_path("innodb_data_file_path",
462
462
&innobase_data_file_path);
463
463
sys_var_const_os_str_ptr sys_innodb_data_home_dir("innodb_data_home_dir",
465
465
&sys_innodb_adaptive_checkpoint,
466
466
&sys_innodb_show_locks_held,
467
467
&sys_innodb_show_verbose_locks,
472
472
&sys_trust_routine_creators,
473
473
&sys_trust_function_creators,
474
@@ -1047,6 +1056,9 @@
474
@@ -1075,6 +1084,9 @@
475
475
{sys_innodb_adaptive_checkpoint.name, (char*) &sys_innodb_adaptive_checkpoint, SHOW_SYS},
476
476
{"innodb_read_io_threads", (char*) &innobase_read_io_threads, SHOW_LONG},
477
477
{"innodb_write_io_threads", (char*) &innobase_write_io_threads, SHOW_LONG},
478
478
+ {sys_innodb_io_pattern_trace.name, (char*) &sys_innodb_io_pattern_trace, SHOW_SYS},
479
479
+ {sys_innodb_io_pattern_trace_running.name, (char*) &sys_innodb_io_pattern_trace_running, SHOW_SYS},
480
480
+ {sys_innodb_io_pattern_size_limit.name, (char*) &sys_innodb_io_pattern_size_limit, SHOW_SYS},
481
{sys_innodb_use_legacy_cardinality_algorithm.name,
482
(char*) &sys_innodb_use_legacy_cardinality_algorithm, SHOW_SYS},
482
{sys_interactive_timeout.name,(char*) &sys_interactive_timeout, SHOW_SYS},
483
{sys_join_buffer_size.name, (char*) &sys_join_buffer_size, SHOW_SYS},
484
@@ -3160,6 +3172,19 @@
484
@@ -3210,6 +3222,19 @@
485
485
thd->variables.lc_time_names= global_system_variables.lc_time_names;
502
502
Functions to update thd->options bits
504
diff -r 5060df9888d7 sql/set_var.h
505
--- a/sql/set_var.h Tue Feb 17 22:33:54 2009 -0800
506
+++ b/sql/set_var.h Tue Feb 17 22:33:58 2009 -0800
504
diff -r d4826c0a98c2 sql/set_var.h
505
--- a/sql/set_var.h Wed Jul 29 09:58:58 2009 -0700
506
+++ b/sql/set_var.h Wed Jul 29 10:00:12 2009 -0700
507
@@ -1012,6 +1012,17 @@
508
508
virtual void set_default(THD *thd, enum_var_type type);
522
522
/****************************************************************************
523
523
Classes for parsing of the SET command
524
524
****************************************************************************/
525
diff -r 5060df9888d7 sql/sql_parse.cc
526
--- a/sql/sql_parse.cc Tue Feb 17 22:33:54 2009 -0800
527
+++ b/sql/sql_parse.cc Tue Feb 17 22:33:58 2009 -0800
528
@@ -8009,6 +8009,13 @@
525
diff -r d4826c0a98c2 sql/sql_parse.cc
526
--- a/sql/sql_parse.cc Wed Jul 29 09:58:58 2009 -0700
527
+++ b/sql/sql_parse.cc Wed Jul 29 10:00:12 2009 -0700
528
@@ -8104,6 +8104,13 @@
530
530
pthread_mutex_unlock(&LOCK_global_user_client_stats);
539
539
*write_to_binlog= tmp_write_to_binlog;
542
diff -r 5060df9888d7 sql/sql_show.cc
543
--- a/sql/sql_show.cc Tue Feb 17 22:33:54 2009 -0800
544
+++ b/sql/sql_show.cc Tue Feb 17 22:33:58 2009 -0800
546
#ifdef HAVE_INNOBASE_DB
542
diff -r d4826c0a98c2 sql/sql_show.cc
543
--- a/sql/sql_show.cc Wed Jul 29 09:58:58 2009 -0700
544
+++ b/sql/sql_show.cc Wed Jul 29 10:00:12 2009 -0700
547
546
#include "ha_innodb.h"
550
549
+#ifdef HAVE_INNOBASE_DB
551
550
+#define INSIDE_HA_INNOBASE_CC
557
556
+/* We need to undef it in InnoDB */
559
558
+#endif /* HAVE_INNOBASE_DB */
561
560
#ifndef NO_EMBEDDED_ACCESS_CHECKS
562
561
static const char *grant_names[]={
563
@@ -4088,6 +4099,67 @@
562
"select","insert","update","delete","create","drop","reload","shutdown",
563
@@ -4108,6 +4119,72 @@
564
564
DBUG_RETURN(res);
574
574
+ DBUG_ENTER("innodb_io_pattern_fill_table");
575
575
+ int returnable= 0;
577
+ /* deny access to non-superusers */
578
+ if (check_global_access(thd, PROCESS_ACL)) {
577
582
+ /* We cannot use inline functions of InnoDB here */
579
584
+ /* !!!!!ATTENTION!!!!!: This function is not protected by mutex for performance. */
649
654
ST_FIELD_INFO variables_fields_info[]=
651
@@ -5069,6 +5154,10 @@
656
@@ -5089,6 +5174,10 @@
652
657
make_old_format, 0, -1, -1, 1},
653
658
{"VIEWS", view_fields_info, create_schema_table,
654
659
get_all_tables, 0, get_schema_views_record, 1, 2, 0},
659
664
{0, 0, 0, 0, 0, 0, 0, 0, 0}
662
diff -r 5060df9888d7 sql/sql_yacc.yy
663
--- a/sql/sql_yacc.yy Tue Feb 17 22:33:54 2009 -0800
664
+++ b/sql/sql_yacc.yy Tue Feb 17 22:33:58 2009 -0800
667
diff -r d4826c0a98c2 sql/sql_yacc.yy
668
--- a/sql/sql_yacc.yy Wed Jul 29 09:58:58 2009 -0700
669
+++ b/sql/sql_yacc.yy Wed Jul 29 10:00:12 2009 -0700
665
670
@@ -685,6 +685,7 @@