← Back to team overview

maria-developers team mailing list archive

Re: can "set read_only" be non-blocking?

 

On Thu, Jun 23, 2011 at 1:09 AM, Michael Widenius <monty@xxxxxxxxxxxx>wrote:

>
> Hi!
>
> >>>>> "MARK" == MARK CALLAGHAN <mdcallag@xxxxxxxxx> writes:
>

MARK> Per the code in set_var.cc:
>
>
> MARK>     /*
>
> MARK>     Perform a 'FLUSH TABLES WITH READ LOCK'.
>
> MARK>     This is a 3 step process:
>
> MARK>     - [1] lock_global_read_lock()
>
> MARK>     - [2] close_cached_tables()
>
> MARK>     - [3] make_global_read_lock_block_commit()
>
> MARK>     [1] prevents new connections from obtaining tables locked for
> write.
>
> MARK>     [2] waits until all existing connections close their tables.
>
> MARK>     [3] prevents transactions from being committed.
>
> MARK>   */
>
>
> MARK> Can there be a variant that doesn't do #2? My workload doesn't use
> MyISAM
> MARK> and I don't know if #2 is done because of MyISAM. Calling
> MARK> close_cached_tables seems like a heavy way to force LOCK TABLEs to be
> MARK> unlocked. Any long running queries will cause #2 to block.
>
> The reason for 2 is to ensure that that all table info is written to
> disk so that if you do a snapshot or copy of tables, you will get
> things in a consistent state.
>
> This is mostly for MyISAM and non transactional tables, but it will
> also speed up things for InnoDB tables and allow you to copy xtradb
> tables from one server to another (if you are using table spaces)
> without having to take down the server.
>

We are not using this for backup. This doesn't make it safe to copy
InnoDB/XtraDB tables as the background IO threads can still do writes (flush
dirty pages, merge insert buffer pages, purge delete rows.


>
> It's possible to do a 'FLUSH TABLES FAST WITH READ LOCK' version that
> would only flush the header of MyISAM tables, which would probably
> help you, as long as you don't plan to copy any tables to any other
> server.
>
>
We want a fast version of this to support other admin activities. In this
case we don't care if this doesn't make it safe to backup MyISAM. Is it
possible to provide that option and is it interesting for MariaDB to have
such an option?

-- 
Mark Callaghan
mdcallag@xxxxxxxxx

Follow ups

References