Jump to content
Fivewin Brasil

Travamento de Registro/Tabela - SQLRDD x MySql


macs

Recommended Posts

Pessoal, estou com um problema constante de lock de registro no meu sistema.

Alguém já passou por algo parecido?

Existe alguma configuração diferente de Autocommit?

Todos os comandos que manipula dados no sistema segue essa sequência: 

Exemplo:

SR_BeginTransaction()

     TRY
          nErr := ::oConexao:exec( SR_SQLCodeGen( apCode, aValues, ::oConexao:nSystemID ) )   
         SR_CommitTransaction()   

  CATCH oErr

        SR_RollBackTransaction()
        MsgInfo( oErr:Description )

        RETURN
    END

SR_EndTransaction

Erro retornado:

SQLExecDirect Error (1205) Lock wait timeout exceeded; try restarting transaction - Lock wait timeout exceeded; try restarting transaction Command sent to database : 
UPDATE  `requisicoes_exames`  SET   `sit_exame` = 'I' WHERE `id_requisi` = 781 AND `id_tpexame` = 1
Steatment handle  : 
Connection handle : 
RetCode           :       1205
    SR_MYSQL:RUNTIMEERR     Linha : 904
SR_MYSQL:EXEC     Linha : 394

Link to comment
Share on other sites

Boa noite meu amigo.

Isso daí possivelmente é configuração de ambiente do MySQL.

Você tem que mudar alguns campos no arquivo de configuração do MYSQL/MariaDB.

O campo principal aí deve ser: o wait_timeout

O meu arquivo My.INI do MariaDB é assim:
 

///////////////////////////////////////////////////////////
[mysqld]
datadir=C:\Program Files\MariaDB 10.6\data
port=3307
innodb-page-size=16384
innodb_buffer_pool_size=5096M
max_allowed_packet = 64M
wait_timeout = 6000
skip-name-resolve
sql-mode = ""
sysdate-is-now = 1
innodb = FORCE
innodb-strict-mode = 1
general_log = 0

# CACHES AND LIMITS #
tmp-table-size = 16M
max-heap-table-size = 16M
query-cache-type = 0
query-cache-size = 0
max-connections = 100
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 1024
table-open-cache = 2048

# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 64M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 2G

[client]
port=3307
plugin-dir=C:/Program Files/MariaDB 10.6/lib/plugin
/////////////////////////////////////////////////////////////////////////////

 

Lembrando que esta configuração é a que coloco para maioria dos clientes e rodam sistemas pesados.

 

Um abraço,

Alexandre Pereira

 

 

 

Link to comment
Share on other sites

Você está colocando um MSGINFO dentro de um BEGIN/END TRANSACTION, vc nunca deve fazer isso pois se acontece algum erro a mensagem será apresentada na tela e até o usuário dar ok a sua transação fica aberta e isso gera um lock no banco.

Outro detalhe é que você deve fazer suas transações de forma que se der esse tipo de erro sejam repetidas por algumas vezes. É comum o banco de dados, por algum motivo, dar por exemplo deadlock e o correto é ser feito o rollback e ser enviado o mesmo comando e então o banco aceita.

Se não sabe o que é deadlock sugiro pequisar no youtube sobre o assunto, basicamente ocorre quando uma conexão fica aguardando o unlock de outra conexão e essa outra fica aguardando o unlock da primeira conexão, ou seja, uma fica esperando a outra e o servidor do banco precisa escolher uma pra derrubar e priorizar a outra. Pesquise sobre o assunto.

Eu não trabalho com MySql, mas o que disse acima são informações úteis para qualquer banco de dados que você trabalhe. O comportamento acima é de qualquer SGDB.

Abraços

Link to comment
Share on other sites

12 horas atrás, macs disse:

Obrigado amigo... irei testar e darei um feedback se o problema foi resolvido!

Outra coisa, você está usando o MariaDb ou MySql? Qual a versão?

De um modo geral uso o MariaDB 10.6, mas os clientes trabalham com as mais variadas versões. Inclusive alguns usam o MySQL mesmo.

Mas esta configuração de ambiente é para o MariaDB, porém os campos são os essenciais para configuração de ambos (Maria/MySQL).

Um abraço,

Alexandre Pereira

Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...