From: Michael Widenius Date: December 28 2011 10:09am Subject: Re: question about locks with optimize table List-Archive: http://lists.mysql.com/internals/38412 Message-Id: <20218.60112.927602.85242@narttu.askmonty.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi! >>>>> "Zardosht" == Zardosht Kasheff writes: Zardosht> How can a storage engine allow access to a table by other clients while an Zardosht> optimize is running? Zardosht> I think the issue here is that even if the storage Zardosht> engine could theoretically allow access to the table by other clients while Zardosht> running an optimize, there is no way for the storage engine to tell MySQL Zardosht> that this is ok. Setting the lock type to TL_WRITE_ALLOW_WRITE in Zardosht> handler::store_lock does not work By doing it either of these ways: - Return at once from handler::optimize() and then run optimize in the background in the storage engine. - Change mysql_admin_table() to check for 'table->lock_type' instead of 'lock_type' in the code. This should allow the storage engine to change to use TL_WRITE_ALLOW_WRITE in handler::store_lock(). Please check if the later works for you, in which case I will do the above change in MariaDB. Regards, Monty