]>
Commit | Line | Data |
---|---|---|
b4e1fa2c AM |
1 | # name : innodb_show_status.patch |
2 | # introduced : 11 or before | |
3 | # maintainer : Yasufumi | |
4 | # | |
5 | #!!! notice !!! | |
6 | # Any small change to this file in the main branch | |
7 | # should be done or reviewed by the maintainer! | |
8 | diff -ruN a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c | |
9 | --- a/storage/innobase/buf/buf0buf.c 2010-11-03 07:01:13.000000000 +0900 | |
10 | +++ b/storage/innobase/buf/buf0buf.c 2010-12-03 15:07:31.786968193 +0900 | |
adf0fb13 | 11 | @@ -4831,6 +4831,7 @@ |
d8778560 AM |
12 | } |
13 | ||
14 | total_info->pool_size += pool_info->pool_size; | |
15 | + total_info->pool_size_bytes += pool_info->pool_size_bytes; | |
16 | total_info->lru_len += pool_info->lru_len; | |
17 | total_info->old_lru_len += pool_info->old_lru_len; | |
18 | total_info->free_list_len += pool_info->free_list_len; | |
adf0fb13 | 19 | @@ -4894,6 +4895,8 @@ |
d8778560 AM |
20 | |
21 | pool_info->pool_size = buf_pool->curr_size; | |
22 | ||
23 | + pool_info->pool_size_bytes = buf_pool->curr_pool_size; | |
24 | + | |
25 | pool_info->lru_len = UT_LIST_GET_LEN(buf_pool->LRU); | |
26 | ||
27 | pool_info->old_lru_len = buf_pool->LRU_old_len; | |
adf0fb13 | 28 | @@ -5010,14 +5013,16 @@ |
d8778560 | 29 | ut_ad(pool_info); |
b4e1fa2c AM |
30 | |
31 | fprintf(file, | |
32 | - "Buffer pool size %lu\n" | |
33 | - "Free buffers %lu\n" | |
34 | - "Database pages %lu\n" | |
35 | - "Old database pages %lu\n" | |
36 | - "Modified db pages %lu\n" | |
37 | + "Buffer pool size %lu\n" | |
38 | + "Buffer pool size, bytes %lu\n" | |
39 | + "Free buffers %lu\n" | |
40 | + "Database pages %lu\n" | |
41 | + "Old database pages %lu\n" | |
42 | + "Modified db pages %lu\n" | |
43 | "Pending reads %lu\n" | |
44 | "Pending writes: LRU %lu, flush list %lu, single page %lu\n", | |
d8778560 AM |
45 | pool_info->pool_size, |
46 | + pool_info->pool_size_bytes, | |
47 | pool_info->free_list_len, | |
48 | pool_info->lru_len, | |
49 | pool_info->old_lru_len, | |
b4e1fa2c AM |
50 | diff -ruN a/storage/innobase/buf/buf0flu.c b/storage/innobase/buf/buf0flu.c |
51 | --- a/storage/innobase/buf/buf0flu.c 2010-12-03 20:58:26.000000000 +0300 | |
52 | +++ b/storage/innobase/buf/buf0flu.c 2011-01-07 03:37:41.000000000 +0300 | |
53 | @@ -75,7 +75,7 @@ | |
54 | static buf_flush_stat_t buf_flush_stat_sum; | |
55 | ||
56 | /** Number of pages flushed through non flush_list flushes. */ | |
57 | -static ulint buf_lru_flush_page_count = 0; | |
58 | +// static ulint buf_lru_flush_page_count = 0; | |
59 | ||
60 | /* @} */ | |
61 | ||
62 | diff -ruN a/storage/innobase/fil/fil0fil.c b/storage/innobase/fil/fil0fil.c | |
63 | --- a/storage/innobase/fil/fil0fil.c 2010-11-03 07:01:13.000000000 +0900 | |
64 | +++ b/storage/innobase/fil/fil0fil.c 2010-12-03 15:07:31.790357112 +0900 | |
adf0fb13 | 65 | @@ -4888,3 +4888,30 @@ |
b4e1fa2c AM |
66 | |
67 | fil_system = NULL; | |
68 | } | |
69 | + | |
70 | +/************************************************************************* | |
71 | +Return local hash table informations. */ | |
72 | + | |
73 | +ulint | |
74 | +fil_system_hash_cells(void) | |
75 | +/*=======================*/ | |
76 | +{ | |
77 | + if (fil_system) { | |
78 | + return (fil_system->spaces->n_cells | |
79 | + + fil_system->name_hash->n_cells); | |
80 | + } else { | |
81 | + return 0; | |
82 | + } | |
83 | +} | |
84 | + | |
85 | +ulint | |
86 | +fil_system_hash_nodes(void) | |
87 | +/*=======================*/ | |
88 | +{ | |
89 | + if (fil_system) { | |
90 | + return (UT_LIST_GET_LEN(fil_system->space_list) | |
91 | + * (sizeof(fil_space_t) + MEM_BLOCK_HEADER_SIZE)); | |
92 | + } else { | |
93 | + return 0; | |
94 | + } | |
95 | +} | |
96 | diff -ruN a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc | |
97 | --- a/storage/innobase/handler/ha_innodb.cc 2010-12-03 15:06:58.727955654 +0900 | |
98 | +++ b/storage/innobase/handler/ha_innodb.cc 2010-12-03 15:07:31.799376984 +0900 | |
adf0fb13 | 99 | @@ -603,6 +603,8 @@ |
b4e1fa2c AM |
100 | (char*) &export_vars.innodb_buffer_pool_pages_dirty, SHOW_LONG}, |
101 | {"buffer_pool_pages_flushed", | |
102 | (char*) &export_vars.innodb_buffer_pool_pages_flushed, SHOW_LONG}, | |
103 | + {"buffer_pool_pages_LRU_flushed", | |
104 | + (char*) &export_vars.innodb_buffer_pool_pages_LRU_flushed, SHOW_LONG}, | |
105 | {"buffer_pool_pages_free", | |
106 | (char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG}, | |
107 | #ifdef UNIV_DEBUG | |
adf0fb13 | 108 | @@ -11081,6 +11083,16 @@ |
b4e1fa2c AM |
109 | "Force InnoDB to not use next-key locking, to use only row-level locking.", |
110 | NULL, NULL, FALSE); | |
111 | ||
112 | +static MYSQL_SYSVAR_ULONG(show_verbose_locks, srv_show_verbose_locks, | |
113 | + PLUGIN_VAR_OPCMDARG, | |
114 | + "Whether to show records locked in SHOW INNODB STATUS.", | |
115 | + NULL, NULL, 0, 0, 1, 0); | |
116 | + | |
117 | +static MYSQL_SYSVAR_ULONG(show_locks_held, srv_show_locks_held, | |
118 | + PLUGIN_VAR_RQCMDARG, | |
119 | + "Number of locks held to print for each InnoDB transaction in SHOW INNODB STATUS.", | |
120 | + NULL, NULL, 10, 0, 1000, 0); | |
121 | + | |
122 | #ifdef UNIV_LOG_ARCHIVE | |
123 | static MYSQL_SYSVAR_STR(log_arch_dir, innobase_log_arch_dir, | |
124 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, | |
adf0fb13 | 125 | @@ -11268,7 +11280,7 @@ |
b4e1fa2c AM |
126 | |
127 | static MYSQL_SYSVAR_STR(version, innodb_version_str, | |
128 | PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_READONLY, | |
129 | - "InnoDB version", NULL, NULL, INNODB_VERSION_STR); | |
130 | + "Percona-InnoDB-plugin version", NULL, NULL, INNODB_VERSION_STR); | |
131 | ||
132 | static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc, | |
133 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, | |
adf0fb13 | 134 | @@ -11361,6 +11373,8 @@ |
b4e1fa2c AM |
135 | MYSQL_SYSVAR(thread_concurrency), |
136 | MYSQL_SYSVAR(thread_sleep_delay), | |
137 | MYSQL_SYSVAR(autoinc_lock_mode), | |
138 | + MYSQL_SYSVAR(show_verbose_locks), | |
139 | + MYSQL_SYSVAR(show_locks_held), | |
140 | MYSQL_SYSVAR(version), | |
141 | MYSQL_SYSVAR(use_sys_malloc), | |
142 | MYSQL_SYSVAR(use_native_aio), | |
d8778560 AM |
143 | diff -ruN a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h |
144 | --- a/storage/innobase/include/buf0buf.h 2011-01-20 07:37:08.000000000 +0900 | |
145 | +++ b/storage/innobase/include/buf0buf.h 2011-02-14 15:25:20.859126532 +0900 | |
adf0fb13 | 146 | @@ -125,6 +125,7 @@ |
d8778560 AM |
147 | /* General buffer pool info */ |
148 | ulint pool_unique_id; /*!< Buffer Pool ID */ | |
149 | ulint pool_size; /*!< Buffer Pool size in pages */ | |
150 | + ulint pool_size_bytes; | |
151 | ulint lru_len; /*!< Length of buf_pool->LRU */ | |
152 | ulint old_lru_len; /*!< buf_pool->LRU_old_len */ | |
153 | ulint free_list_len; /*!< Length of buf_pool->free list */ | |
b4e1fa2c AM |
154 | diff -ruN a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h |
155 | --- a/storage/innobase/include/fil0fil.h 2010-11-03 07:01:13.000000000 +0900 | |
156 | +++ b/storage/innobase/include/fil0fil.h 2010-12-03 15:07:31.812028575 +0900 | |
157 | @@ -726,6 +726,17 @@ | |
158 | /*============================*/ | |
159 | ulint id); /*!< in: space id */ | |
160 | ||
161 | +/************************************************************************* | |
162 | +Return local hash table informations. */ | |
163 | + | |
164 | +ulint | |
165 | +fil_system_hash_cells(void); | |
166 | +/*========================*/ | |
167 | + | |
168 | +ulint | |
169 | +fil_system_hash_nodes(void); | |
170 | +/*========================*/ | |
171 | + | |
172 | typedef struct fil_space_struct fil_space_t; | |
173 | ||
174 | #endif | |
175 | diff -ruN a/storage/innobase/include/read0read.h b/storage/innobase/include/read0read.h | |
176 | --- a/storage/innobase/include/read0read.h 2010-12-04 02:58:26.000000000 +0900 | |
177 | +++ b/storage/innobase/include/read0read.h 2011-01-21 19:35:44.127631727 +0900 | |
178 | @@ -88,6 +88,7 @@ | |
179 | void | |
180 | read_view_print( | |
181 | /*============*/ | |
182 | + FILE* file, | |
183 | const read_view_t* view); /*!< in: read view */ | |
184 | /*********************************************************************//** | |
185 | Create a consistent cursor view for mysql to be used in cursors. In this | |
186 | diff -ruN a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h | |
187 | --- a/storage/innobase/include/srv0srv.h 2010-11-03 07:01:13.000000000 +0900 | |
188 | +++ b/storage/innobase/include/srv0srv.h 2010-12-03 15:07:31.813958103 +0900 | |
adf0fb13 | 189 | @@ -142,6 +142,9 @@ |
b4e1fa2c AM |
190 | extern char srv_adaptive_flushing; |
191 | ||
192 | ||
193 | +extern ulint srv_show_locks_held; | |
194 | +extern ulint srv_show_verbose_locks; | |
195 | + | |
196 | /* The sort order table of the MySQL latin1_swedish_ci character set | |
197 | collation */ | |
198 | extern const byte* srv_latin1_ordering; | |
adf0fb13 | 199 | @@ -323,6 +326,8 @@ |
b4e1fa2c AM |
200 | buffer pool to disk */ |
201 | extern ulint srv_buf_pool_flushed; | |
202 | ||
203 | +extern ulint buf_lru_flush_page_count; | |
204 | + | |
205 | /** Number of buffer pool reads that led to the | |
206 | reading of a disk page */ | |
207 | extern ulint srv_buf_pool_reads; | |
adf0fb13 | 208 | @@ -702,6 +707,7 @@ |
b4e1fa2c AM |
209 | ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */ |
210 | ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */ | |
211 | ulint innodb_buffer_pool_pages_flushed; /*!< srv_buf_pool_flushed */ | |
212 | + ulint innodb_buffer_pool_pages_LRU_flushed; /*!< buf_lru_flush_page_count */ | |
213 | ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */ | |
214 | ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */ | |
215 | ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/ | |
b4e1fa2c AM |
216 | diff -ruN a/storage/innobase/lock/lock0lock.c b/storage/innobase/lock/lock0lock.c |
217 | --- a/storage/innobase/lock/lock0lock.c 2010-11-03 07:01:13.000000000 +0900 | |
218 | +++ b/storage/innobase/lock/lock0lock.c 2010-12-03 15:07:31.819023998 +0900 | |
d8778560 | 219 | @@ -4374,6 +4374,7 @@ |
b4e1fa2c AM |
220 | |
221 | putc('\n', file); | |
222 | ||
223 | + if ( srv_show_verbose_locks ) { | |
224 | block = buf_page_try_get(space, page_no, &mtr); | |
225 | ||
226 | for (i = 0; i < lock_rec_get_n_bits(lock); ++i) { | |
d8778560 | 227 | @@ -4400,6 +4401,7 @@ |
b4e1fa2c AM |
228 | |
229 | putc('\n', file); | |
230 | } | |
231 | + } | |
232 | ||
233 | mtr_commit(&mtr); | |
234 | if (UNIV_LIKELY_NULL(heap)) { | |
d8778560 | 235 | @@ -4583,7 +4585,7 @@ |
b4e1fa2c AM |
236 | } |
237 | } | |
238 | ||
239 | - if (!srv_print_innodb_lock_monitor) { | |
240 | + if (!srv_print_innodb_lock_monitor && !srv_show_locks_held) { | |
241 | nth_trx++; | |
242 | goto loop; | |
243 | } | |
d8778560 | 244 | @@ -4655,8 +4657,8 @@ |
b4e1fa2c AM |
245 | |
246 | nth_lock++; | |
247 | ||
248 | - if (nth_lock >= 10) { | |
249 | - fputs("10 LOCKS PRINTED FOR THIS TRX:" | |
250 | + if (nth_lock >= srv_show_locks_held) { | |
251 | + fputs("TOO MANY LOCKS PRINTED FOR THIS TRX:" | |
252 | " SUPPRESSING FURTHER PRINTS\n", | |
253 | file); | |
254 | ||
255 | diff -ruN a/storage/innobase/read/read0read.c b/storage/innobase/read/read0read.c | |
256 | --- a/storage/innobase/read/read0read.c 2010-12-04 02:58:26.000000000 +0900 | |
257 | +++ b/storage/innobase/read/read0read.c 2011-01-21 19:37:08.292650181 +0900 | |
258 | @@ -357,34 +357,35 @@ | |
259 | void | |
260 | read_view_print( | |
261 | /*============*/ | |
262 | + FILE* file, | |
263 | const read_view_t* view) /*!< in: read view */ | |
264 | { | |
265 | ulint n_ids; | |
266 | ulint i; | |
267 | ||
268 | if (view->type == VIEW_HIGH_GRANULARITY) { | |
269 | - fprintf(stderr, | |
270 | + fprintf(file, | |
271 | "High-granularity read view undo_n:o %llu\n", | |
272 | (ullint) view->undo_no); | |
273 | } else { | |
274 | - fprintf(stderr, "Normal read view\n"); | |
275 | + fprintf(file, "Normal read view\n"); | |
276 | } | |
277 | ||
278 | - fprintf(stderr, "Read view low limit trx n:o " TRX_ID_FMT "\n", | |
279 | + fprintf(file, "Read view low limit trx n:o " TRX_ID_FMT "\n", | |
280 | (ullint) view->low_limit_no); | |
281 | ||
282 | - fprintf(stderr, "Read view up limit trx id " TRX_ID_FMT "\n", | |
283 | + fprintf(file, "Read view up limit trx id " TRX_ID_FMT "\n", | |
284 | (ullint) view->up_limit_id); | |
285 | ||
286 | - fprintf(stderr, "Read view low limit trx id " TRX_ID_FMT "\n", | |
287 | + fprintf(file, "Read view low limit trx id " TRX_ID_FMT "\n", | |
288 | (ullint) view->low_limit_id); | |
289 | ||
290 | - fprintf(stderr, "Read view individually stored trx ids:\n"); | |
291 | + fprintf(file, "Read view individually stored trx ids:\n"); | |
292 | ||
293 | n_ids = view->n_trx_ids; | |
294 | ||
295 | for (i = 0; i < n_ids; i++) { | |
296 | - fprintf(stderr, "Read view trx id " TRX_ID_FMT "\n", | |
297 | + fprintf(file, "Read view trx id " TRX_ID_FMT "\n", | |
298 | (ullint) read_view_get_nth_trx_id(view, i)); | |
299 | } | |
300 | } | |
301 | diff -ruN a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c | |
302 | --- a/storage/innobase/srv/srv0srv.c 2010-11-03 07:01:13.000000000 +0900 | |
303 | +++ b/storage/innobase/srv/srv0srv.c 2010-12-03 15:07:31.824022673 +0900 | |
adf0fb13 | 304 | @@ -83,6 +83,7 @@ |
b4e1fa2c AM |
305 | #include "ha_prototypes.h" |
306 | #include "trx0i_s.h" | |
307 | #include "os0sync.h" /* for HAVE_ATOMIC_BUILTINS */ | |
308 | +#include "read0read.h" | |
309 | #include "mysql/plugin.h" | |
310 | #include "mysql/service_thd_wait.h" | |
311 | ||
adf0fb13 | 312 | @@ -188,6 +189,9 @@ |
b4e1fa2c AM |
313 | the checkpoints. */ |
314 | UNIV_INTERN char srv_adaptive_flushing = TRUE; | |
315 | ||
316 | +UNIV_INTERN ulint srv_show_locks_held = 10; | |
317 | +UNIV_INTERN ulint srv_show_verbose_locks = 0; | |
318 | + | |
319 | /** Maximum number of times allowed to conditionally acquire | |
320 | mutex before switching to blocking wait on the mutex */ | |
321 | #define MAX_MUTEX_NOWAIT 20 | |
adf0fb13 | 322 | @@ -314,6 +318,7 @@ |
b4e1fa2c AM |
323 | /* variable to count the number of pages that were written from buffer |
324 | pool to the disk */ | |
325 | UNIV_INTERN ulint srv_buf_pool_flushed = 0; | |
326 | +UNIV_INTERN ulint buf_lru_flush_page_count = 0; | |
327 | ||
328 | /** Number of buffer pool reads that led to the | |
329 | reading of a disk page */ | |
adf0fb13 | 330 | @@ -1823,6 +1828,13 @@ |
b4e1fa2c AM |
331 | ulint n_reserved; |
332 | ibool ret; | |
333 | ||
334 | + ulint btr_search_sys_subtotal; | |
335 | + ulint lock_sys_subtotal; | |
336 | + ulint recv_sys_subtotal; | |
337 | + | |
338 | + ulint i; | |
339 | + trx_t* trx; | |
340 | + | |
341 | mutex_enter(&srv_innodb_monitor_mutex); | |
342 | ||
343 | current_time = time(NULL); | |
adf0fb13 | 344 | @@ -1871,31 +1883,6 @@ |
b4e1fa2c AM |
345 | |
346 | mutex_exit(&dict_foreign_err_mutex); | |
347 | ||
348 | - /* Only if lock_print_info_summary proceeds correctly, | |
349 | - before we call the lock_print_info_all_transactions | |
350 | - to print all the lock information. */ | |
351 | - ret = lock_print_info_summary(file, nowait); | |
352 | - | |
353 | - if (ret) { | |
354 | - if (trx_start) { | |
355 | - long t = ftell(file); | |
356 | - if (t < 0) { | |
357 | - *trx_start = ULINT_UNDEFINED; | |
358 | - } else { | |
359 | - *trx_start = (ulint) t; | |
360 | - } | |
361 | - } | |
362 | - lock_print_info_all_transactions(file); | |
363 | - if (trx_end) { | |
364 | - long t = ftell(file); | |
365 | - if (t < 0) { | |
366 | - *trx_end = ULINT_UNDEFINED; | |
367 | - } else { | |
368 | - *trx_end = (ulint) t; | |
369 | - } | |
370 | - } | |
371 | - } | |
372 | - | |
373 | fputs("--------\n" | |
374 | "FILE I/O\n" | |
375 | "--------\n", file); | |
adf0fb13 | 376 | @@ -1926,10 +1913,78 @@ |
b4e1fa2c AM |
377 | "BUFFER POOL AND MEMORY\n" |
378 | "----------------------\n", file); | |
379 | fprintf(file, | |
380 | - "Total memory allocated " ULINTPF | |
381 | - "; in additional pool allocated " ULINTPF "\n", | |
382 | - ut_total_allocated_memory, | |
383 | - mem_pool_get_reserved(mem_comm_pool)); | |
384 | + "Total memory allocated " ULINTPF | |
385 | + "; in additional pool allocated " ULINTPF "\n", | |
386 | + ut_total_allocated_memory, | |
387 | + mem_pool_get_reserved(mem_comm_pool)); | |
388 | + /* Calcurate reserved memories */ | |
389 | + if (btr_search_sys && btr_search_sys->hash_index->heap) { | |
390 | + btr_search_sys_subtotal = mem_heap_get_size(btr_search_sys->hash_index->heap); | |
391 | + } else { | |
392 | + btr_search_sys_subtotal = 0; | |
393 | + for (i=0; i < btr_search_sys->hash_index->n_mutexes; i++) { | |
394 | + btr_search_sys_subtotal += mem_heap_get_size(btr_search_sys->hash_index->heaps[i]); | |
395 | + } | |
396 | + } | |
397 | + | |
398 | + lock_sys_subtotal = 0; | |
399 | + if (trx_sys) { | |
400 | + mutex_enter(&kernel_mutex); | |
401 | + trx = UT_LIST_GET_FIRST(trx_sys->mysql_trx_list); | |
402 | + while (trx) { | |
403 | + lock_sys_subtotal += ((trx->lock_heap) ? mem_heap_get_size(trx->lock_heap) : 0); | |
404 | + trx = UT_LIST_GET_NEXT(mysql_trx_list, trx); | |
405 | + } | |
406 | + mutex_exit(&kernel_mutex); | |
407 | + } | |
408 | + | |
409 | + recv_sys_subtotal = ((recv_sys && recv_sys->addr_hash) | |
410 | + ? mem_heap_get_size(recv_sys->heap) : 0); | |
411 | + | |
412 | + fprintf(file, | |
413 | + "Internal hash tables (constant factor + variable factor)\n" | |
414 | + " Adaptive hash index %lu \t(%lu + %lu)\n" | |
415 | + " Page hash %lu (buffer pool 0 only)\n" | |
416 | + " Dictionary cache %lu \t(%lu + %lu)\n" | |
417 | + " File system %lu \t(%lu + %lu)\n" | |
418 | + " Lock system %lu \t(%lu + %lu)\n" | |
adf0fb13 | 419 | + " Recovery system %lu \t(%lu + %lu)\n", |
b4e1fa2c AM |
420 | + |
421 | + (ulong) (btr_search_sys | |
422 | + ? (btr_search_sys->hash_index->n_cells * sizeof(hash_cell_t)) : 0) | |
423 | + + btr_search_sys_subtotal, | |
424 | + (ulong) (btr_search_sys | |
425 | + ? (btr_search_sys->hash_index->n_cells * sizeof(hash_cell_t)) : 0), | |
426 | + (ulong) btr_search_sys_subtotal, | |
427 | + | |
428 | + (ulong) (buf_pool_from_array(0)->page_hash->n_cells * sizeof(hash_cell_t)), | |
429 | + | |
430 | + (ulong) (dict_sys ? ((dict_sys->table_hash->n_cells | |
431 | + + dict_sys->table_id_hash->n_cells | |
432 | + ) * sizeof(hash_cell_t) | |
433 | + + dict_sys->size) : 0), | |
434 | + (ulong) (dict_sys ? ((dict_sys->table_hash->n_cells | |
435 | + + dict_sys->table_id_hash->n_cells | |
436 | + ) * sizeof(hash_cell_t)) : 0), | |
437 | + (ulong) (dict_sys ? (dict_sys->size) : 0), | |
438 | + | |
439 | + (ulong) (fil_system_hash_cells() * sizeof(hash_cell_t) | |
440 | + + fil_system_hash_nodes()), | |
441 | + (ulong) (fil_system_hash_cells() * sizeof(hash_cell_t)), | |
442 | + (ulong) fil_system_hash_nodes(), | |
443 | + | |
444 | + (ulong) ((lock_sys ? (lock_sys->rec_hash->n_cells * sizeof(hash_cell_t)) : 0) | |
445 | + + lock_sys_subtotal), | |
446 | + (ulong) (lock_sys ? (lock_sys->rec_hash->n_cells * sizeof(hash_cell_t)) : 0), | |
447 | + (ulong) lock_sys_subtotal, | |
448 | + | |
449 | + (ulong) (((recv_sys && recv_sys->addr_hash) | |
450 | + ? (recv_sys->addr_hash->n_cells * sizeof(hash_cell_t)) : 0) | |
451 | + + recv_sys_subtotal), | |
452 | + (ulong) ((recv_sys && recv_sys->addr_hash) | |
453 | + ? (recv_sys->addr_hash->n_cells * sizeof(hash_cell_t)) : 0), | |
adf0fb13 | 454 | + (ulong) recv_sys_subtotal); |
b4e1fa2c AM |
455 | + |
456 | fprintf(file, "Dictionary memory allocated " ULINTPF "\n", | |
457 | dict_sys->size); | |
458 | ||
adf0fb13 | 459 | @@ -1945,6 +2000,16 @@ |
b4e1fa2c AM |
460 | fprintf(file, "%lu read views open inside InnoDB\n", |
461 | UT_LIST_GET_LEN(trx_sys->view_list)); | |
462 | ||
463 | + if (UT_LIST_GET_LEN(trx_sys->view_list)) { | |
464 | + read_view_t* view = UT_LIST_GET_LAST(trx_sys->view_list); | |
465 | + | |
466 | + if (view) { | |
467 | + fprintf(file, "---OLDEST VIEW---\n"); | |
468 | + read_view_print(file, view); | |
469 | + fprintf(file, "-----------------\n"); | |
470 | + } | |
471 | + } | |
472 | + | |
473 | n_reserved = fil_space_get_n_reserved_extents(0); | |
474 | if (n_reserved > 0) { | |
475 | fprintf(file, | |
adf0fb13 | 476 | @@ -1988,6 +2053,31 @@ |
b4e1fa2c AM |
477 | srv_n_rows_deleted_old = srv_n_rows_deleted; |
478 | srv_n_rows_read_old = srv_n_rows_read; | |
479 | ||
480 | + /* Only if lock_print_info_summary proceeds correctly, | |
481 | + before we call the lock_print_info_all_transactions | |
482 | + to print all the lock information. */ | |
483 | + ret = lock_print_info_summary(file, nowait); | |
484 | + | |
485 | + if (ret) { | |
486 | + if (trx_start) { | |
487 | + long t = ftell(file); | |
488 | + if (t < 0) { | |
489 | + *trx_start = ULINT_UNDEFINED; | |
490 | + } else { | |
491 | + *trx_start = (ulint) t; | |
492 | + } | |
493 | + } | |
494 | + lock_print_info_all_transactions(file); | |
495 | + if (trx_end) { | |
496 | + long t = ftell(file); | |
497 | + if (t < 0) { | |
498 | + *trx_end = ULINT_UNDEFINED; | |
499 | + } else { | |
500 | + *trx_end = (ulint) t; | |
501 | + } | |
502 | + } | |
503 | + } | |
504 | + | |
505 | fputs("----------------------------\n" | |
506 | "END OF INNODB MONITOR OUTPUT\n" | |
507 | "============================\n", file); | |
adf0fb13 | 508 | @@ -2031,6 +2121,7 @@ |
b4e1fa2c AM |
509 | = srv_buf_pool_write_requests; |
510 | export_vars.innodb_buffer_pool_wait_free = srv_buf_pool_wait_free; | |
511 | export_vars.innodb_buffer_pool_pages_flushed = srv_buf_pool_flushed; | |
512 | + export_vars.innodb_buffer_pool_pages_LRU_flushed = buf_lru_flush_page_count; | |
513 | export_vars.innodb_buffer_pool_reads = srv_buf_pool_reads; | |
514 | export_vars.innodb_buffer_pool_read_ahead | |
515 | = stat.n_ra_pages_read; | |
516 | diff -ruN a/storage/innobase/sync/sync0arr.c b/storage/innobase/sync/sync0arr.c | |
517 | --- a/storage/innobase/sync/sync0arr.c 2010-11-03 07:01:13.000000000 +0900 | |
518 | +++ b/storage/innobase/sync/sync0arr.c 2010-12-03 15:07:31.826041368 +0900 | |
adf0fb13 | 519 | @@ -478,7 +478,7 @@ |
b4e1fa2c AM |
520 | |
521 | fprintf(file, | |
522 | "--Thread %lu has waited at %s line %lu" | |
523 | - " for %.2f seconds the semaphore:\n", | |
524 | + " for %#.5g seconds the semaphore:\n", | |
adf0fb13 AM |
525 | (ulong) os_thread_pf(cell->thread), |
526 | innobase_basename(cell->file), (ulong) cell->line, | |
b4e1fa2c | 527 | difftime(time(NULL), cell->reservation_time)); |
b4e1fa2c AM |
528 | diff -ruN a/storage/innobase/trx/trx0purge.c b/storage/innobase/trx/trx0purge.c |
529 | --- a/storage/innobase/trx/trx0purge.c 2010-12-04 02:58:26.000000000 +0900 | |
530 | +++ b/storage/innobase/trx/trx0purge.c 2011-01-21 19:40:42.086683671 +0900 | |
11822e22 | 531 | @@ -1212,7 +1212,7 @@ |
b4e1fa2c AM |
532 | /*=====================*/ |
533 | { | |
534 | fprintf(stderr, "InnoDB: Purge system view:\n"); | |
535 | - read_view_print(purge_sys->view); | |
536 | + read_view_print(stderr, purge_sys->view); | |
537 | ||
538 | fprintf(stderr, "InnoDB: Purge trx n:o " TRX_ID_FMT | |
539 | ", undo n:o " TRX_ID_FMT "\n", |