mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
srv0srv.h Support raw disk partitions as data files
srv0start.c Support raw disk partitions as data files srv0srv.c Support raw disk partitions as data files row0purge.c < 4 GB rows, doublewrite, hang fixes row0row.c < 4 GB rows, doublewrite, hang fixes row0sel.c < 4 GB rows, doublewrite, hang fixes row0uins.c < 4 GB rows, doublewrite, hang fixes row0umod.c < 4 GB rows, doublewrite, hang fixes row0undo.c < 4 GB rows, doublewrite, hang fixes row0upd.c < 4 GB rows, doublewrite, hang fixes srv0srv.c < 4 GB rows, doublewrite, hang fixes srv0start.c < 4 GB rows, doublewrite, hang fixes sync0rw.c < 4 GB rows, doublewrite, hang fixes sync0sync.c < 4 GB rows, doublewrite, hang fixes trx0purge.c < 4 GB rows, doublewrite, hang fixes trx0rec.c < 4 GB rows, doublewrite, hang fixes trx0sys.c < 4 GB rows, doublewrite, hang fixes btr0btr.c < 4 GB rows, doublewrite, hang fixes btr0cur.c < 4 GB rows, doublewrite, hang fixes buf0buf.c < 4 GB rows, doublewrite, hang fixes buf0flu.c < 4 GB rows, doublewrite, hang fixes buf0rea.c < 4 GB rows, doublewrite, hang fixes data0data.c < 4 GB rows, doublewrite, hang fixes fil0fil.c < 4 GB rows, doublewrite, hang fixes fsp0fsp.c < 4 GB rows, doublewrite, hang fixes ibuf0ibuf.c < 4 GB rows, doublewrite, hang fixes lock0lock.c < 4 GB rows, doublewrite, hang fixes log0log.c < 4 GB rows, doublewrite, hang fixes log0recv.c < 4 GB rows, doublewrite, hang fixes os0file.c < 4 GB rows, doublewrite, hang fixes page0cur.c < 4 GB rows, doublewrite, hang fixes pars0pars.c < 4 GB rows, doublewrite, hang fixes rem0cmp.c < 4 GB rows, doublewrite, hang fixes rem0rec.c < 4 GB rows, doublewrite, hang fixes row0ins.c < 4 GB rows, doublewrite, hang fixes row0mysql.c < 4 GB rows, doublewrite, hang fixes univ.i < 4 GB rows, doublewrite, hang fixes data0data.ic < 4 GB rows, doublewrite, hang fixes mach0data.ic < 4 GB rows, doublewrite, hang fixes rem0rec.ic < 4 GB rows, doublewrite, hang fixes row0upd.ic < 4 GB rows, doublewrite, hang fixes trx0rec.ic < 4 GB rows, doublewrite, hang fixes rem0cmp.h < 4 GB rows, doublewrite, hang fixes rem0rec.h < 4 GB rows, doublewrite, hang fixes row0ins.h < 4 GB rows, doublewrite, hang fixes row0mysql.h < 4 GB rows, doublewrite, hang fixes row0row.h < 4 GB rows, doublewrite, hang fixes row0upd.h < 4 GB rows, doublewrite, hang fixes srv0srv.h < 4 GB rows, doublewrite, hang fixes sync0sync.h < 4 GB rows, doublewrite, hang fixes trx0rec.h < 4 GB rows, doublewrite, hang fixes trx0sys.h < 4 GB rows, doublewrite, hang fixes trx0types.h < 4 GB rows, doublewrite, hang fixes trx0undo.h < 4 GB rows, doublewrite, hang fixes ut0dbg.h < 4 GB rows, doublewrite, hang fixes ut0ut.h < 4 GB rows, doublewrite, hang fixes btr0btr.h < 4 GB rows, doublewrite, hang fixes btr0cur.h < 4 GB rows, doublewrite, hang fixes buf0buf.h < 4 GB rows, doublewrite, hang fixes buf0flu.h < 4 GB rows, doublewrite, hang fixes data0data.h < 4 GB rows, doublewrite, hang fixes dict0mem.h < 4 GB rows, doublewrite, hang fixes fil0fil.h < 4 GB rows, doublewrite, hang fixes fsp0fsp.h < 4 GB rows, doublewrite, hang fixes os0file.h < 4 GB rows, doublewrite, hang fixes
This commit is contained in:
@ -93,6 +93,8 @@ ulint srv_lock_wait_timeout = 1024 * 1024 * 1024;
|
||||
char* srv_unix_file_flush_method_str = NULL;
|
||||
ulint srv_unix_file_flush_method = 0;
|
||||
|
||||
ibool srv_use_doublewrite_buf = TRUE;
|
||||
|
||||
ibool srv_set_thread_priorities = TRUE;
|
||||
int srv_query_thread_priority = 0;
|
||||
/*-------------------------------------------*/
|
||||
@ -109,6 +111,8 @@ ibool srv_print_buf_io = FALSE;
|
||||
ibool srv_print_log_io = FALSE;
|
||||
ibool srv_print_latch_waits = FALSE;
|
||||
|
||||
ibool srv_print_innodb_monitor = FALSE;
|
||||
|
||||
/* The parameters below are obsolete: */
|
||||
|
||||
ibool srv_print_parsed_sql = FALSE;
|
||||
@ -1492,7 +1496,6 @@ srv_init(void)
|
||||
slot = srv_mysql_table + i;
|
||||
slot->in_use = FALSE;
|
||||
slot->event = os_event_create(NULL);
|
||||
slot->suspended = FALSE;
|
||||
ut_a(slot->event);
|
||||
}
|
||||
|
||||
@ -1661,7 +1664,6 @@ srv_suspend_mysql_thread(
|
||||
slot->thr = thr;
|
||||
|
||||
os_event_reset(event);
|
||||
slot->suspended = TRUE;
|
||||
|
||||
slot->suspend_time = ut_time();
|
||||
|
||||
@ -1693,27 +1695,6 @@ srv_suspend_mysql_thread(
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
os_event_t
|
||||
srv_mysql_thread_event_get(void)
|
||||
{
|
||||
srv_slot_t* slot;
|
||||
os_event_t event;
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
slot = srv_table_reserve_slot_for_mysql();
|
||||
|
||||
event = slot->event;
|
||||
|
||||
os_event_reset(event);
|
||||
|
||||
slot->suspended = TRUE;
|
||||
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return(event);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
Releases a MySQL OS thread waiting for a lock to be released, if the
|
||||
thread is already suspended. */
|
||||
@ -1737,7 +1718,6 @@ srv_release_mysql_thread_if_suspended(
|
||||
/* Found */
|
||||
|
||||
os_event_set(slot->event);
|
||||
slot->suspended = FALSE;
|
||||
|
||||
return;
|
||||
}
|
||||
@ -1746,59 +1726,6 @@ srv_release_mysql_thread_if_suspended(
|
||||
/* not found */
|
||||
}
|
||||
|
||||
void
|
||||
srv_mysql_thread_release(void)
|
||||
/*==========================*/
|
||||
{
|
||||
srv_slot_t* slot;
|
||||
ulint i;
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
for (i = 0; i < OS_THREAD_MAX_N; i++) {
|
||||
|
||||
slot = srv_mysql_table + i;
|
||||
|
||||
if (slot->in_use && slot->suspended) {
|
||||
/* Found */
|
||||
slot->suspended = FALSE;
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
os_event_set(slot->event);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ut_a(0);
|
||||
}
|
||||
|
||||
void
|
||||
srv_mysql_thread_slot_free(
|
||||
/*==========================*/
|
||||
os_event_t event)
|
||||
{
|
||||
srv_slot_t* slot;
|
||||
ulint i;
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
for (i = 0; i < OS_THREAD_MAX_N; i++) {
|
||||
|
||||
slot = srv_mysql_table + i;
|
||||
|
||||
if (slot->in_use && slot->event == event) {
|
||||
/* Found */
|
||||
slot->in_use = FALSE;
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ut_a(0);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
A thread which wakes up threads whose lock wait may have lasted too long. */
|
||||
|
||||
@ -1924,6 +1851,7 @@ srv_master_thread(
|
||||
ulint i;
|
||||
time_t last_flush_time;
|
||||
time_t current_time;
|
||||
time_t last_monitor_time;
|
||||
|
||||
UT_NOT_USED(arg);
|
||||
|
||||
@ -1936,6 +1864,8 @@ srv_master_thread(
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
os_event_set(srv_sys->operational);
|
||||
|
||||
last_monitor_time = time(NULL);
|
||||
loop:
|
||||
mutex_enter(&kernel_mutex);
|
||||
|
||||
@ -1975,8 +1905,18 @@ loop:
|
||||
while (n_pages_purged) {
|
||||
/* TODO: replace this by a check if we are running
|
||||
out of file space! */
|
||||
if (srv_print_innodb_monitor) {
|
||||
ut_print_timestamp(stdout);
|
||||
printf(" InnoDB starts purge\n");
|
||||
}
|
||||
|
||||
n_pages_purged = trx_purge();
|
||||
|
||||
if (srv_print_innodb_monitor) {
|
||||
ut_print_timestamp(stdout);
|
||||
printf(" InnoDB purged %lu pages\n", n_pages_purged);
|
||||
}
|
||||
|
||||
current_time = time(NULL);
|
||||
|
||||
if (difftime(current_time, last_flush_time) > 1) {
|
||||
@ -1986,14 +1926,40 @@ loop:
|
||||
}
|
||||
|
||||
background_loop:
|
||||
/*
|
||||
sync_array_print_info(sync_primary_wait_array);
|
||||
os_aio_print();
|
||||
buf_print_io();
|
||||
*/
|
||||
/* In this loop we run background operations while the server
|
||||
is quiet */
|
||||
|
||||
current_time = time(NULL);
|
||||
|
||||
if (srv_print_innodb_monitor
|
||||
&& difftime(current_time, last_monitor_time) > 8) {
|
||||
|
||||
printf("================================\n");
|
||||
last_monitor_time = time(NULL);
|
||||
ut_print_timestamp(stdout);
|
||||
|
||||
printf(" INNODB MONITOR OUTPUT\n"
|
||||
"================================\n");
|
||||
printf("--------------------------\n"
|
||||
"LOCKS HELD BY TRANSACTIONS\n"
|
||||
"--------------------------\n");
|
||||
lock_print_info();
|
||||
printf("-----------------------------------------------\n"
|
||||
"CURRENT SEMAPHORES RESERVED AND SEMAPHORE WAITS\n"
|
||||
"-----------------------------------------------\n");
|
||||
sync_print();
|
||||
printf("CURRENT PENDING FILE I/O'S\n"
|
||||
"--------------------------\n");
|
||||
os_aio_print();
|
||||
printf("-----------\n"
|
||||
"BUFFER POOL\n"
|
||||
"-----------\n");
|
||||
buf_print_io();
|
||||
printf("----------------------------\n"
|
||||
"END OF INNODB MONITOR OUTPUT\n"
|
||||
"============================\n");
|
||||
}
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
mutex_exit(&kernel_mutex);
|
||||
@ -2005,8 +1971,18 @@ background_loop:
|
||||
/* The server has been quiet for a while: start running background
|
||||
operations */
|
||||
|
||||
if (srv_print_innodb_monitor) {
|
||||
ut_print_timestamp(stdout);
|
||||
printf(" InnoDB starts purge\n");
|
||||
}
|
||||
|
||||
n_pages_purged = trx_purge();
|
||||
|
||||
if (srv_print_innodb_monitor) {
|
||||
ut_print_timestamp(stdout);
|
||||
printf(" InnoDB purged %lu pages\n", n_pages_purged);
|
||||
}
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
mutex_exit(&kernel_mutex);
|
||||
@ -2014,8 +1990,18 @@ background_loop:
|
||||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
if (srv_print_innodb_monitor) {
|
||||
ut_print_timestamp(stdout);
|
||||
printf(" InnoDB starts insert buffer merge\n");
|
||||
}
|
||||
|
||||
n_bytes_merged = ibuf_contract(TRUE);
|
||||
|
||||
if (srv_print_innodb_monitor) {
|
||||
ut_print_timestamp(stdout);
|
||||
printf(" InnoDB merged %lu bytes\n", n_bytes_merged);
|
||||
}
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
mutex_exit(&kernel_mutex);
|
||||
@ -2023,7 +2009,7 @@ background_loop:
|
||||
}
|
||||
mutex_exit(&kernel_mutex);
|
||||
|
||||
n_pages_flushed = buf_flush_batch(BUF_FLUSH_LIST, 20, ut_dulint_max);
|
||||
n_pages_flushed = buf_flush_batch(BUF_FLUSH_LIST, 100, ut_dulint_max);
|
||||
|
||||
mutex_enter(&kernel_mutex);
|
||||
if (srv_activity_count != old_activity_count) {
|
||||
@ -2052,14 +2038,12 @@ background_loop:
|
||||
|
||||
/* mem_print_new_info();
|
||||
*/
|
||||
|
||||
/* fsp_print(0); */
|
||||
|
||||
/* fprintf(stderr, "Validating tablespace\n");
|
||||
/*
|
||||
fsp_print(0);
|
||||
fprintf(stderr, "Validating tablespace\n");
|
||||
fsp_validate(0);
|
||||
fprintf(stderr, "Validation ok\n");
|
||||
*/
|
||||
|
||||
#ifdef UNIV_SEARCH_PERF_STAT
|
||||
/* btr_search_print_info(); */
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user