LOCK

You are viewing an old version of this article. View the current version here.

Sintaxe:

LOCK TABLES
    tbl_name [[AS] alias] lock_type
    [, tbl_name [[AS] alias] lock_type] ...

lock_type:
    READ [LOCAL]
  | [LOW_PRIORITY] WRITE
  | WRITE CONCURRENT

UNLOCK TABLES

Descrição:

OptionDescription
READRead lock, no writes allowed
READ LOCALRead but allow concurrent inserts
WRITEExclusive write lock. No other connections can read or write to this table
LOW_PRIORITY WRITEExclusive write lock, but allow new read locks on the table until we get the write lock.
WRITE CONCURRENTExclusive write lock, but allow READ LOCAL locks to the table.

MariaDB permite as sessões cliente adquirir bloqueios de tabela explicitamente com a finalidade de cooperar com outras sessões no acesso de tabelas, ou para impedir com que outras sessões alterem tabelas durante períodos onde uma sessão requer acesso exclusivo à elas. Uma sessão pode adquirir ou liberar bloqueios somente por si mesma. Uma sessão não pode adquirir bloqueios para outra sessão ou liberar bloqueios realizados por outra sessão.

Bloqueios podem ser usados para emular transações ou para obter mais velocidade ao atualizar as tabelas

LOCK TABLES explicitamente, adquire bloqueios de tabela para a sessão cliente atual. Bloqueios de tabela podem ser adquiridos por tabelas base ou visões. Para usar LOCK TABLES, você deve ter o privilégio LOCK TABLES, e o privilégio SELECT para cada objeto a ser bloqueado. Veja GRANT

Para bloqueio de visões, LOCK TABLES adiciona todas as tabelas base usadas na visão para o conjunto de tabelas a serem bloqueadas e bloqueá-las automáticamente. Se você bloqueia uma tabela explicitamente com LOCK TABLES, qualquer tabela usada nos triggers são também bloqueadas implicitamente, conforme descrito em http://dev.mysql.com/doc/refman/5.1/en/lock-tables-and-triggers.html.

UNLOCK TABLES explicitamente libera qualquer bloqueio de tabela realizado pela sessão atual.

Outro uso para UNLOCK TABLES é o de liberar o bloqueio de leitura global adquirido com a instrução FLUSH TABLES WITH READ LOCK, a qual permite a você bloquear todas as tabelas em todos os bancos de dados. Veja FLUSH. (Esta é uma forma muito conveniente de fazer backups se você possui um sistema de arquivos como o Veritas, que pode tirar snapshots no tempo).

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.