mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Optimize flush tables with read lock (FTWRL) to not wait for select's
Part of MDEV-5336 Implement LOCK FOR BACKUP The idea is that instead of waiting in close_cached_tables() for all tables to be closed, we instead call flush_tables() that does: - Flush not used objects in table cache to free memory - Collect all tables that are open - Call HA_EXTRA_FLUSH on the objects, to get them into "closed state" - Added HA_EXTRA_FLUSH support to archive and CSV - Added multi-user protection to HA_EXTRA_FLUSH in MyISAM and Aria The benefit compared to old code is: - FTWRL doesn't have to wait for long running read operations or open HANDLER's
This commit is contained in:
@@ -77,6 +77,7 @@
|
||||
#include "sql_base.h" // close_tables_for_reopen
|
||||
#include "sql_parse.h" // is_log_table_write_query
|
||||
#include "sql_acl.h" // SUPER_ACL
|
||||
#include "sql_handler.h"
|
||||
#include <hash.h>
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
@@ -1015,6 +1016,8 @@ bool Global_read_lock::lock_global_read_lock(THD *thd)
|
||||
{
|
||||
MDL_request mdl_request;
|
||||
|
||||
mysql_ha_cleanup_no_free(thd);
|
||||
|
||||
DBUG_ASSERT(! thd->mdl_context.is_lock_owner(MDL_key::GLOBAL, "", "",
|
||||
MDL_SHARED));
|
||||
mdl_request.init(MDL_key::GLOBAL, "", "", MDL_SHARED, MDL_EXPLICIT);
|
||||
|
||||
Reference in New Issue
Block a user