AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 16206
Accepted
Bruno Reis
Bruno Reis
Asked: 2012-04-08 10:56:47 +0800 CST2012-04-08 10:56:47 +0800 CST 2012-04-08 10:56:47 +0800 CST

Como fazer com que a conexão MySQL 5.1 ignore kills?

  • 772

De acordo com o manual do MySQL 5.1, seção 13.7.6.4 Sintaxe KILL , quando você faz killuma conexão, um sinalizador de interrupção específico da thread é definido para a thread . O sinalizador será verificado de tempos em tempos, mesmo durante algumas consultas de execução longa, para que possa interromper a consulta.

Existe uma maneira de instruir um thread a não verificar o sinalizador de interrupção enquanto estiver dentro de algum tipo de seção crítica delimitada?

O que estou procurando é algo como:

BEGIN IGNORE_KILLS;
-- if this thread is killed here, it will simply ignore it
END IGNORE_KILLS;
-- here, the thread would be able to tell if someone tried to kill it previously

Supondo que não exista, ou que alguém possa me oferecer uma solução melhor para o meu problema, deixe-me explicar por que eu o desejaria.

Tenho uma aplicação que deve reagir a linhas que são inseridas em uma tabela, e esta deve ser escalável. Segundo o especialista em MySQL Baron Schwartz , não se deve ficar fazendo polling no banco de dados e ele propõe, como alternativa, usar SELECT SLEEP(...)/KILL.

O problema é que depois que a conexão em espera select sleep(...) for notificada (ao ser morta) que tem trabalho a fazer, gostaria de garantir que, durante o seu trabalho (o que chamei de seção crítica acima), ela não vai parar de fazer o que deve funcionar mesmo no caso de o thread assassino enlouquecer e matá-lo novamente.

mysql
  • 2 2 respostas
  • 170 Views

2 respostas

  • Voted
  1. Best Answer
    Bruno Reis
    2012-04-08T11:57:22+08:002012-04-08T11:57:22+08:00

    talvez eu tenha resolvido meu problema...

    Eu estava com medo de que 2 threads assassinos diferentes pudessem: (1) show processlist, (2) escolher a mesma conexão para matar, (3) então ambos o fariam kill.

    A primeira morte desencadearia a execução de tudo o que eu quisesse, enquanto a segunda morte poderia explodir as coisas.

    A solução mais fácil e quase óbvia que eu perdi é olhar para o outro lado do problema: em vez de tornar o thread de trabalho unkillable , os threads assassinos devem cooperar: os threads assassinos fariam (1) select get_lock('killer_thread'), somente depois de adquirir o bloqueio seriam (2) show processlist, (3) killos fios escolhidos e por fim (4) select release_lock('killer_thread').

    • 2
  2. Aaron Brown
    2012-04-09T08:40:13+08:002012-04-09T08:40:13+08:00

    Presumo que você esteja se referindo a este artigo que Baron escreveu para o blog Engine Yard...

    Embora ele tenha fornecido algumas maneiras de reduzir o trabalho de implementar uma fila em um RDBMS, o verdadeiro argumento deste artigo é não fazer isso. Existem dezenas de produtos disponíveis projetados para serem filas, e os bancos de dados não são um deles. Isso vai te morder no futuro.

    • 1

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve