1 # name : innodb_show_status_extend.patch
2 # introduced : XtraDB based 5.5.8
3 # maintainer : Yasufumi
6 # Any small change to this file in the main branch
7 # should be done or reviewed by the maintainer!
8 --- a/storage/innobase/handler/ha_innodb.cc
9 +++ b/storage/innobase/handler/ha_innodb.cc
11 trx_t* trx); /*!< in: transaction handle */
13 static SHOW_VAR innodb_status_variables[]= {
14 + {"adaptive_hash_cells",
15 + (char*) &export_vars.innodb_adaptive_hash_cells, SHOW_LONG},
16 + {"adaptive_hash_heap_buffers",
17 + (char*) &export_vars.innodb_adaptive_hash_heap_buffers, SHOW_LONG},
18 + {"adaptive_hash_hash_searches",
19 + (char*) &export_vars.innodb_adaptive_hash_hash_searches, SHOW_LONG},
20 + {"adaptive_hash_non_hash_searches",
21 + (char*) &export_vars.innodb_adaptive_hash_non_hash_searches, SHOW_LONG},
22 + {"background_log_sync",
23 + (char*) &export_vars.innodb_background_log_sync, SHOW_LONG},
24 {"buffer_pool_pages_data",
25 (char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
26 {"buffer_pool_pages_dirty",
28 {"buffer_pool_pages_latched",
29 (char*) &export_vars.innodb_buffer_pool_pages_latched, SHOW_LONG},
30 #endif /* UNIV_DEBUG */
31 + {"buffer_pool_pages_made_not_young",
32 + (char*) &export_vars.innodb_buffer_pool_pages_made_not_young, SHOW_LONG},
33 + {"buffer_pool_pages_made_young",
34 + (char*) &export_vars.innodb_buffer_pool_pages_made_young, SHOW_LONG},
35 {"buffer_pool_pages_misc",
36 (char*) &export_vars.innodb_buffer_pool_pages_misc, SHOW_LONG},
37 + {"buffer_pool_pages_old",
38 + (char*) &export_vars.innodb_buffer_pool_pages_old, SHOW_LONG},
39 {"buffer_pool_pages_total",
40 (char*) &export_vars.innodb_buffer_pool_pages_total, SHOW_LONG},
41 {"buffer_pool_read_ahead_rnd",
43 (char*) &export_vars.innodb_buffer_pool_wait_free, SHOW_LONG},
44 {"buffer_pool_write_requests",
45 (char*) &export_vars.innodb_buffer_pool_write_requests, SHOW_LONG},
47 + (char*) &export_vars.innodb_checkpoint_age, SHOW_LONG},
48 + {"checkpoint_max_age",
49 + (char*) &export_vars.innodb_checkpoint_max_age, SHOW_LONG},
50 + {"checkpoint_target_age",
51 + (char*) &export_vars.innodb_checkpoint_target_age, SHOW_LONG},
53 (char*) &export_vars.innodb_data_fsyncs, SHOW_LONG},
54 {"data_pending_fsyncs",
56 (char*) &export_vars.innodb_dict_tables, SHOW_LONG},
57 {"have_atomic_builtins",
58 (char*) &export_vars.innodb_have_atomic_builtins, SHOW_BOOL},
59 + {"history_list_length",
60 + (char*) &export_vars.innodb_history_list_length, SHOW_LONG},
61 + {"ibuf_discarded_delete_marks",
62 + (char*) &export_vars.innodb_ibuf_discarded_delete_marks, SHOW_LONG},
63 + {"ibuf_discarded_deletes",
64 + (char*) &export_vars.innodb_ibuf_discarded_deletes, SHOW_LONG},
65 + {"ibuf_discarded_inserts",
66 + (char*) &export_vars.innodb_ibuf_discarded_inserts, SHOW_LONG},
68 + (char*) &export_vars.innodb_ibuf_free_list, SHOW_LONG},
69 + {"ibuf_merged_delete_marks",
70 + (char*) &export_vars.innodb_ibuf_merged_delete_marks, SHOW_LONG},
71 + {"ibuf_merged_deletes",
72 + (char*) &export_vars.innodb_ibuf_merged_deletes, SHOW_LONG},
73 + {"ibuf_merged_inserts",
74 + (char*) &export_vars.innodb_ibuf_merged_inserts, SHOW_LONG},
76 + (char*) &export_vars.innodb_ibuf_merges, SHOW_LONG},
77 + {"ibuf_segment_size",
78 + (char*) &export_vars.innodb_ibuf_segment_size, SHOW_LONG},
80 + (char*) &export_vars.innodb_ibuf_size, SHOW_LONG},
82 (char*) &export_vars.innodb_log_waits, SHOW_LONG},
83 {"log_write_requests",
84 (char*) &export_vars.innodb_log_write_requests, SHOW_LONG},
86 (char*) &export_vars.innodb_log_writes, SHOW_LONG},
88 + (char*) &export_vars.innodb_lsn_current, SHOW_LONGLONG},
90 + (char*) &export_vars.innodb_lsn_flushed, SHOW_LONGLONG},
91 + {"lsn_last_checkpoint",
92 + (char*) &export_vars.innodb_lsn_last_checkpoint, SHOW_LONGLONG},
93 + {"master_thread_1_second_loops",
94 + (char*) &export_vars.innodb_master_thread_1_second_loops, SHOW_LONG},
95 + {"master_thread_10_second_loops",
96 + (char*) &export_vars.innodb_master_thread_10_second_loops, SHOW_LONG},
97 + {"master_thread_background_loops",
98 + (char*) &export_vars.innodb_master_thread_background_loops, SHOW_LONG},
99 + {"master_thread_main_flush_loops",
100 + (char*) &export_vars.innodb_master_thread_main_flush_loops, SHOW_LONG},
101 + {"master_thread_sleeps",
102 + (char*) &export_vars.innodb_master_thread_sleeps, SHOW_LONG},
104 + (char*) &export_vars.innodb_max_trx_id, SHOW_LONGLONG},
105 + {"mem_adaptive_hash",
106 + (char*) &export_vars.innodb_mem_adaptive_hash, SHOW_LONG},
108 + (char*) &export_vars.innodb_mem_dictionary, SHOW_LONG},
110 + (char*) &export_vars.innodb_mem_total, SHOW_LONG},
112 + (char*) &export_vars.innodb_mutex_os_waits, SHOW_LONGLONG},
113 + {"mutex_spin_rounds",
114 + (char*) &export_vars.innodb_mutex_spin_rounds, SHOW_LONGLONG},
115 + {"mutex_spin_waits",
116 + (char*) &export_vars.innodb_mutex_spin_waits, SHOW_LONGLONG},
117 + {"oldest_view_low_limit_trx_id",
118 + (char*) &export_vars.innodb_oldest_view_low_limit_trx_id, SHOW_LONGLONG},
120 (char*) &export_vars.innodb_os_log_fsyncs, SHOW_LONG},
121 {"os_log_pending_fsyncs",
123 (char*) &export_vars.innodb_pages_read, SHOW_LONG},
125 (char*) &export_vars.innodb_pages_written, SHOW_LONG},
127 + (char*) &export_vars.innodb_purge_trx_id, SHOW_LONGLONG},
129 + (char*) &export_vars.innodb_purge_undo_no, SHOW_LONGLONG},
130 {"row_lock_current_waits",
131 (char*) &export_vars.innodb_row_lock_current_waits, SHOW_LONG},
132 + {"current_row_locks",
133 + (char*) &export_vars.innodb_current_row_locks, SHOW_LONG},
135 (char*) &export_vars.innodb_row_lock_time, SHOW_LONGLONG},
136 {"row_lock_time_avg",
138 (char*) &export_vars.innodb_rows_read, SHOW_LONG},
140 (char*) &export_vars.innodb_rows_updated, SHOW_LONG},
141 + {"s_lock_os_waits",
142 + (char*) &export_vars.innodb_s_lock_os_waits, SHOW_LONGLONG},
143 + {"s_lock_spin_rounds",
144 + (char*) &export_vars.innodb_s_lock_spin_rounds, SHOW_LONGLONG},
145 + {"s_lock_spin_waits",
146 + (char*) &export_vars.innodb_s_lock_spin_waits, SHOW_LONGLONG},
147 {"truncated_status_writes",
148 (char*) &export_vars.innodb_truncated_status_writes, SHOW_LONG},
149 + {"x_lock_os_waits",
150 + (char*) &export_vars.innodb_x_lock_os_waits, SHOW_LONGLONG},
151 + {"x_lock_spin_rounds",
152 + (char*) &export_vars.innodb_x_lock_spin_rounds, SHOW_LONGLONG},
153 + {"x_lock_spin_waits",
154 + (char*) &export_vars.innodb_x_lock_spin_waits, SHOW_LONGLONG},
155 {NullS, NullS, SHOW_LONG}
158 --- a/storage/innobase/ibuf/ibuf0ibuf.c
159 +++ b/storage/innobase/ibuf/ibuf0ibuf.c
163 /******************************************************************//**
164 +Function to pass ibuf status variables */
167 +ibuf_export_ibuf_status(
168 +/*====================*/
171 + ulint* segment_size,
173 + ulint* merged_inserts,
174 + ulint* merged_delete_marks,
175 + ulint* merged_deletes,
176 + ulint* discarded_inserts,
177 + ulint* discarded_delete_marks,
178 + ulint* discarded_deletes)
183 + = ibuf->free_list_len;
189 + = ibuf->n_merged_ops[IBUF_OP_INSERT];
190 + *merged_delete_marks
191 + = ibuf->n_merged_ops[IBUF_OP_DELETE_MARK];
193 + = ibuf->n_merged_ops[IBUF_OP_DELETE];
195 + = ibuf->n_discarded_ops[IBUF_OP_INSERT];
196 + *discarded_delete_marks
197 + = ibuf->n_discarded_ops[IBUF_OP_DELETE_MARK];
199 + = ibuf->n_discarded_ops[IBUF_OP_DELETE];
202 +/******************************************************************//**
203 Updates the size information of the ibuf, assuming the segment size has not
206 --- a/storage/innobase/include/ibuf0ibuf.h
207 +++ b/storage/innobase/include/ibuf0ibuf.h
212 +/******************************************************************//**
213 +Function to pass ibuf status variables */
216 +ibuf_export_ibuf_status(
217 +/*====================*/
220 + ulint* segment_size,
222 + ulint* merged_inserts,
223 + ulint* merged_delete_marks,
224 + ulint* merged_deletes,
225 + ulint* discarded_inserts,
226 + ulint* discarded_delete_marks,
227 + ulint* discarded_deletes);
229 #define IBUF_HEADER_PAGE_NO FSP_IBUF_HEADER_PAGE_NO
230 #define IBUF_TREE_ROOT_PAGE_NO FSP_IBUF_TREE_ROOT_PAGE_NO
231 --- a/storage/innobase/include/lock0lock.h
232 +++ b/storage/innobase/include/lock0lock.h
234 /** The lock system struct */
235 struct lock_sys_struct{
236 hash_table_t* rec_hash; /*!< hash table of the record locks */
240 /** The lock system */
241 --- a/storage/innobase/include/srv0srv.h
242 +++ b/storage/innobase/include/srv0srv.h
245 /** Status variables to be passed to MySQL */
246 struct export_var_struct{
247 + ulint innodb_adaptive_hash_cells;
248 + ulint innodb_adaptive_hash_heap_buffers;
249 + ulint innodb_adaptive_hash_hash_searches;
250 + ulint innodb_adaptive_hash_non_hash_searches;
251 + ulint innodb_background_log_sync;
252 ulint innodb_data_pending_reads; /*!< Pending reads */
253 ulint innodb_data_pending_writes; /*!< Pending writes */
254 ulint innodb_data_pending_fsyncs; /*!< Pending fsyncs */
257 ulint innodb_buffer_pool_pages_latched; /*!< Latched pages */
258 #endif /* UNIV_DEBUG */
259 + ulint innodb_buffer_pool_pages_made_not_young;
260 + ulint innodb_buffer_pool_pages_made_young;
261 + ulint innodb_buffer_pool_pages_old;
262 ulint innodb_buffer_pool_read_requests; /*!< buf_pool->stat.n_page_gets */
263 ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */
264 ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */
265 @@ -768,13 +776,43 @@
266 ulint innodb_buffer_pool_read_ahead_rnd;/*!< srv_read_ahead_rnd */
267 ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */
268 ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
269 + ulint innodb_checkpoint_age;
270 + ulint innodb_checkpoint_max_age;
271 + ulint innodb_checkpoint_target_age;
272 ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */
273 ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */
274 ulint innodb_deadlocks;
275 ibool innodb_have_atomic_builtins; /*!< HAVE_ATOMIC_BUILTINS */
276 + ulint innodb_history_list_length;
277 + ulint innodb_ibuf_size;
278 + ulint innodb_ibuf_free_list;
279 + ulint innodb_ibuf_segment_size;
280 + ulint innodb_ibuf_merges;
281 + ulint innodb_ibuf_merged_inserts;
282 + ulint innodb_ibuf_merged_delete_marks;
283 + ulint innodb_ibuf_merged_deletes;
284 + ulint innodb_ibuf_discarded_inserts;
285 + ulint innodb_ibuf_discarded_delete_marks;
286 + ulint innodb_ibuf_discarded_deletes;
287 ulint innodb_log_waits; /*!< srv_log_waits */
288 ulint innodb_log_write_requests; /*!< srv_log_write_requests */
289 ulint innodb_log_writes; /*!< srv_log_writes */
290 + ib_int64_t innodb_lsn_current;
291 + ib_int64_t innodb_lsn_flushed;
292 + ib_int64_t innodb_lsn_last_checkpoint;
293 + ulint innodb_master_thread_1_second_loops;
294 + ulint innodb_master_thread_10_second_loops;
295 + ulint innodb_master_thread_background_loops;
296 + ulint innodb_master_thread_main_flush_loops;
297 + ulint innodb_master_thread_sleeps;
298 + ib_int64_t innodb_max_trx_id;
299 + ulint innodb_mem_adaptive_hash;
300 + ulint innodb_mem_dictionary;
301 + ulint innodb_mem_total;
302 + ib_int64_t innodb_mutex_os_waits;
303 + ib_int64_t innodb_mutex_spin_rounds;
304 + ib_int64_t innodb_mutex_spin_waits;
305 + ib_int64_t innodb_oldest_view_low_limit_trx_id;
306 ulint innodb_os_log_written; /*!< srv_os_log_written */
307 ulint innodb_os_log_fsyncs; /*!< fil_n_log_flushes */
308 ulint innodb_os_log_pending_writes; /*!< srv_os_log_pending_writes */
310 ulint innodb_pages_created; /*!< buf_pool->stat.n_pages_created */
311 ulint innodb_pages_read; /*!< buf_pool->stat.n_pages_read */
312 ulint innodb_pages_written; /*!< buf_pool->stat.n_pages_written */
313 + ib_int64_t innodb_purge_trx_id;
314 + ib_int64_t innodb_purge_undo_no;
315 ulint innodb_row_lock_waits; /*!< srv_n_lock_wait_count */
316 ulint innodb_row_lock_current_waits; /*!< srv_n_lock_wait_current_count */
317 ib_int64_t innodb_row_lock_time; /*!< srv_n_lock_wait_time
318 @@ -792,11 +832,18 @@
319 / srv_n_lock_wait_count */
320 ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time
322 + ulint innodb_current_row_locks;
323 ulint innodb_rows_read; /*!< srv_n_rows_read */
324 ulint innodb_rows_inserted; /*!< srv_n_rows_inserted */
325 ulint innodb_rows_updated; /*!< srv_n_rows_updated */
326 ulint innodb_rows_deleted; /*!< srv_n_rows_deleted */
327 ulint innodb_truncated_status_writes; /*!< srv_truncated_status_writes */
328 + ib_int64_t innodb_s_lock_os_waits;
329 + ib_int64_t innodb_s_lock_spin_rounds;
330 + ib_int64_t innodb_s_lock_spin_waits;
331 + ib_int64_t innodb_x_lock_os_waits;
332 + ib_int64_t innodb_x_lock_spin_rounds;
333 + ib_int64_t innodb_x_lock_spin_waits;
336 /** Thread slot in the thread table */
337 --- a/storage/innobase/include/sync0sync.h
338 +++ b/storage/innobase/include/sync0sync.h
341 #define SYNC_SPIN_ROUNDS srv_n_spin_wait_rounds
343 +extern ib_int64_t mutex_spin_round_count;
344 +extern ib_int64_t mutex_spin_wait_count;
345 +extern ib_int64_t mutex_os_wait_count;
347 /** The number of mutex_exit calls. Intended for performance monitoring. */
348 extern ib_int64_t mutex_exit_count;
350 --- a/storage/innobase/lock/lock0lock.c
351 +++ b/storage/innobase/lock/lock0lock.c
353 lock_sys = mem_alloc(sizeof(lock_sys_t));
355 lock_sys->rec_hash = hash_create(n_cells);
356 + lock_sys->rec_num = 0;
358 /* hash_create_mutexes(lock_sys->rec_hash, 2, SYNC_REC_LOCK); */
360 @@ -1729,6 +1730,7 @@
362 HASH_INSERT(lock_t, hash, lock_sys->rec_hash,
363 lock_rec_fold(space, page_no), lock);
364 + lock_sys->rec_num++;
365 if (UNIV_UNLIKELY(type_mode & LOCK_WAIT)) {
367 lock_set_lock_and_trx_wait(lock, trx);
368 @@ -2275,6 +2277,7 @@
370 HASH_DELETE(lock_t, hash, lock_sys->rec_hash,
371 lock_rec_fold(space, page_no), in_lock);
372 + lock_sys->rec_num--;
374 UT_LIST_REMOVE(trx_locks, trx->trx_locks, in_lock);
376 @@ -2318,6 +2321,7 @@
378 HASH_DELETE(lock_t, hash, lock_sys->rec_hash,
379 lock_rec_fold(space, page_no), in_lock);
380 + lock_sys->rec_num--;
382 UT_LIST_REMOVE(trx_locks, trx->trx_locks, in_lock);
384 --- a/storage/innobase/srv/srv0srv.c
385 +++ b/storage/innobase/srv/srv0srv.c
386 @@ -2262,12 +2262,49 @@
389 ulint flush_list_len;
390 + ulint mem_adaptive_hash, mem_dictionary;
391 + read_view_t* oldest_view;
394 buf_get_total_stat(&stat);
395 buf_get_total_list_len(&LRU_len, &free_len, &flush_list_len);
397 + if (btr_search_sys && btr_search_sys->hash_index[0]->heap) {
398 + mem_adaptive_hash = mem_heap_get_size(btr_search_sys->hash_index[0]->heap);
400 + mem_adaptive_hash = 0;
401 + for (i=0; i < btr_search_sys->hash_index[0]->n_mutexes; i++) {
402 + mem_adaptive_hash += mem_heap_get_size(btr_search_sys->hash_index[0]->heaps[i]);
405 + mem_adaptive_hash *= btr_search_index_num;
406 + if (btr_search_sys) {
407 + mem_adaptive_hash += (btr_search_sys->hash_index[0]->n_cells * btr_search_index_num * sizeof(hash_cell_t));
410 + mem_dictionary = (dict_sys ? ((dict_sys->table_hash->n_cells
411 + + dict_sys->table_id_hash->n_cells
412 + ) * sizeof(hash_cell_t)
413 + + dict_sys->size) : 0);
415 mutex_enter(&srv_innodb_monitor_mutex);
417 + export_vars.innodb_adaptive_hash_cells = 0;
418 + export_vars.innodb_adaptive_hash_heap_buffers = 0;
419 + for (i = 0; i < btr_search_index_num; i++) {
420 + hash_table_t* table = btr_search_get_hash_index((index_id_t)i);
422 + export_vars.innodb_adaptive_hash_cells
423 + += hash_get_n_cells(table);
424 + export_vars.innodb_adaptive_hash_heap_buffers
425 + += (UT_LIST_GET_LEN(table->heap->base) - 1);
427 + export_vars.innodb_adaptive_hash_hash_searches
429 + export_vars.innodb_adaptive_hash_non_hash_searches
430 + = btr_cur_n_non_sea;
431 + export_vars.innodb_background_log_sync
432 + = srv_log_writes_and_flush;
433 export_vars.innodb_data_pending_reads
434 = os_n_pending_reads;
435 export_vars.innodb_data_pending_writes
436 @@ -2306,6 +2343,92 @@
438 export_vars.innodb_buffer_pool_pages_misc
439 = buf_pool_get_n_pages() - LRU_len - free_len;
441 + export_vars.innodb_buffer_pool_pages_made_young
442 + = stat.n_pages_made_young;
443 + export_vars.innodb_buffer_pool_pages_made_not_young
444 + = stat.n_pages_not_made_young;
445 + export_vars.innodb_buffer_pool_pages_old = 0;
446 + for (i = 0; i < srv_buf_pool_instances; i++) {
447 + buf_pool_t* buf_pool = buf_pool_from_array(i);
448 + export_vars.innodb_buffer_pool_pages_old
449 + += buf_pool->LRU_old_len;
451 + export_vars.innodb_checkpoint_age
452 + = (log_sys->lsn - log_sys->last_checkpoint_lsn);
453 + export_vars.innodb_checkpoint_max_age
454 + = log_sys->max_checkpoint_age;
455 + export_vars.innodb_checkpoint_target_age
456 + = srv_checkpoint_age_target
457 + ? ut_min(log_sys->max_checkpoint_age_async, srv_checkpoint_age_target)
458 + : log_sys->max_checkpoint_age_async;
459 + export_vars.innodb_history_list_length
460 + = trx_sys->rseg_history_len;
461 + ibuf_export_ibuf_status(
462 + &export_vars.innodb_ibuf_size,
463 + &export_vars.innodb_ibuf_free_list,
464 + &export_vars.innodb_ibuf_segment_size,
465 + &export_vars.innodb_ibuf_merges,
466 + &export_vars.innodb_ibuf_merged_inserts,
467 + &export_vars.innodb_ibuf_merged_delete_marks,
468 + &export_vars.innodb_ibuf_merged_deletes,
469 + &export_vars.innodb_ibuf_discarded_inserts,
470 + &export_vars.innodb_ibuf_discarded_delete_marks,
471 + &export_vars.innodb_ibuf_discarded_deletes);
472 + export_vars.innodb_lsn_current
474 + export_vars.innodb_lsn_flushed
475 + = log_sys->flushed_to_disk_lsn;
476 + export_vars.innodb_lsn_last_checkpoint
477 + = log_sys->last_checkpoint_lsn;
478 + export_vars.innodb_master_thread_1_second_loops
479 + = srv_main_1_second_loops;
480 + export_vars.innodb_master_thread_10_second_loops
481 + = srv_main_10_second_loops;
482 + export_vars.innodb_master_thread_background_loops
483 + = srv_main_background_loops;
484 + export_vars.innodb_master_thread_main_flush_loops
485 + = srv_main_flush_loops;
486 + export_vars.innodb_master_thread_sleeps
488 + export_vars.innodb_max_trx_id
489 + = trx_sys->max_trx_id;
490 + export_vars.innodb_mem_adaptive_hash
491 + = mem_adaptive_hash;
492 + export_vars.innodb_mem_dictionary
494 + export_vars.innodb_mem_total
495 + = ut_total_allocated_memory;
496 + export_vars.innodb_mutex_os_waits
497 + = mutex_os_wait_count;
498 + export_vars.innodb_mutex_spin_rounds
499 + = mutex_spin_round_count;
500 + export_vars.innodb_mutex_spin_waits
501 + = mutex_spin_wait_count;
502 + export_vars.innodb_s_lock_os_waits
503 + = rw_s_os_wait_count;
504 + export_vars.innodb_s_lock_spin_rounds
505 + = rw_s_spin_round_count;
506 + export_vars.innodb_s_lock_spin_waits
507 + = rw_s_spin_wait_count;
508 + export_vars.innodb_x_lock_os_waits
509 + = rw_x_os_wait_count;
510 + export_vars.innodb_x_lock_spin_rounds
511 + = rw_x_spin_round_count;
512 + export_vars.innodb_x_lock_spin_waits
513 + = rw_x_spin_wait_count;
515 + oldest_view = UT_LIST_GET_LAST(trx_sys->view_list);
516 + export_vars.innodb_oldest_view_low_limit_trx_id
517 + = oldest_view ? oldest_view->low_limit_id : 0;
519 + export_vars.innodb_purge_trx_id
520 + = purge_sys->purge_trx_no;
521 + export_vars.innodb_purge_undo_no
522 + = purge_sys->purge_undo_no;
523 + export_vars.innodb_current_row_locks
524 + = lock_sys->rec_num;
526 #ifdef HAVE_ATOMIC_BUILTINS
527 export_vars.innodb_have_atomic_builtins = 1;
529 --- a/storage/innobase/sync/sync0sync.c
530 +++ b/storage/innobase/sync/sync0sync.c
531 @@ -171,13 +171,13 @@
533 /** The number of iterations in the mutex_spin_wait() spin loop.
534 Intended for performance monitoring. */
535 -static ib_int64_t mutex_spin_round_count = 0;
536 +UNIV_INTERN ib_int64_t mutex_spin_round_count = 0;
537 /** The number of mutex_spin_wait() calls. Intended for
538 performance monitoring. */
539 -static ib_int64_t mutex_spin_wait_count = 0;
540 +UNIV_INTERN ib_int64_t mutex_spin_wait_count = 0;
541 /** The number of OS waits in mutex_spin_wait(). Intended for
542 performance monitoring. */
543 -static ib_int64_t mutex_os_wait_count = 0;
544 +UNIV_INTERN ib_int64_t mutex_os_wait_count = 0;
545 /** The number of mutex_exit() calls. Intended for performance
547 UNIV_INTERN ib_int64_t mutex_exit_count = 0;