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 / 问题

All perguntas(dba)

Martin Hope
Nawaz Sohail
Asked: 2015-09-09 06:50:19 +0800 CST

Calcular o tamanho da linha e o tamanho máximo da linha para uma tabela

  • 17

Existe alguma maneira de calcular o número de bytes ocupados pela tabela? Eu sei que você pode obter algumas informações, information_schema.tablesmas essas informações não são precisas o suficiente.

O que realmente é necessário é o número de bytes de acordo com a definição da tabela apenas para InnoDB e o agrupamento também pode ser considerado como utf-8-general-ci .

Por exemplo, uma tabela testé a seguinte

create table test   (
   col1 varchar(25),
   col2 int,
   col3 varchar(3),
   col4 char(15),
   col5 datetime    
);  

Eu precisaria saber o tamanho total da linha que pode ser acumulada em uma linha, de acordo com os tipos de colunas da tabela.

Encontrou algum tipo de solução semelhante para o MS SQL Server, mas precisa da versão do MySQL

mysql database-design
  • 6 respostas
  • 60335 Views
Martin Hope
P.Péter
Asked: 2015-08-20 00:20:47 +0800 CST

A pesquisa de trigramas fica muito mais lenta à medida que a string de pesquisa fica mais longa

  • 17

Em um banco de dados Postgres 9.1, tenho uma tabela table1com cerca de 1,5 milhões de linhas e uma coluna label(nomes simplificados por causa desta questão).

Há um índice de trigrama funcional ativado lower(unaccent(label))( unaccent()tornou-se imutável para permitir seu uso no índice).

A consulta a seguir é bastante rápida:

SELECT count(*) FROM table1
WHERE (lower(unaccent(label)) like lower(unaccent('%someword%')));
 count 
-------
     1
(1 row)

Time: 394,295 ms

Mas a consulta a seguir é mais lenta:

SELECT count(*) FROM table1
WHERE (lower(unaccent(label)) like lower(unaccent('%someword and some more%')));
 count 
-------
     1
(1 row)

Time: 1405,749 ms

E adicionar mais palavras é ainda mais lento, mesmo que a busca seja mais rigorosa.

Tentei um truque simples para executar uma subconsulta para a primeira palavra e, em seguida, uma consulta com a string de pesquisa completa, mas (infelizmente) o planejador de consulta percebeu minhas maquinações:

EXPLAIN ANALYZE
SELECT * FROM (
   SELECT id, title, label from table1
   WHERE lower(unaccent(label)) like lower(unaccent('%someword%'))
   ) t1
WHERE lower(unaccent(label)) like lower(unaccent('%someword and some more%'));
Bitmap Heap Scan na tabela1 (custo=16216.01..16220.04 linhas=1 largura=212) (tempo real=1824.017..1824.019 linhas=1 loops=1)
  Recheck Cond: ((lower(unaccent((label)::text)) ~~ '%someword%'::text) AND (lower(unaccent((label)::text)) ~~ '%someword and some more %'::texto))
  -> Varredura de índice de bitmap em table1_label_hun_gin_trgm (custo=0.00..16216.01 linhas=1 largura=0) (tempo real=1823.900..1823.900 linhas=1 loops=1)
        Index Cond: ((lower(unaccent((label)::text)) ~~ '%someword%'::text) AND (lower(unaccent((label)::text)) ~~ '%someword and some more %'::texto))
Tempo de execução total: 1824,064 ms

Meu problema final é que a string de pesquisa vem de uma interface da web que pode enviar strings bastante longas e, portanto, ser bastante lenta e também constituir um vetor DOS.

Então minhas perguntas são:

  • Como agilizar a consulta?
  • Existe uma maneira de dividi-lo em subconsultas para que seja mais rápido?
  • Talvez uma versão posterior do Postgres seja melhor? (Eu tentei 9.4 e não parece mais rápido: ainda o mesmo efeito. Talvez uma versão posterior?)
  • Talvez seja necessária uma estratégia de indexação diferente?
postgresql full-text-search
  • 2 respostas
  • 2418 Views
Martin Hope
Emad Farrokhi
Asked: 2015-07-05 08:01:22 +0800 CST

Sincronizando dois bancos de dados no SQL Server

  • 17

Eu tenho dois bancos de dados SQL Server. Um é cliente (aplicativo Windows) e o segundo está no servidor. Eu quero sincronizar esses dois bancos de dados de vez em quando (por exemplo, a cada 2 minutos!).

Eu li sobre diferentes maneiras de sincronização, como replicação, carimbo de data/hora, tabelas de log usando gatilhos, Microsoft Sync Framework e assim por diante.

Na verdade, não gosto de usar um método de sincronização que pode ser uma caixa preta (como replicação) porque não quero que as tabelas específicas do SQL Server sejam bloqueadas enquanto as estou atualizando e sincronizando com o servidor.

  1. qual método você acha que eu deveria usar em tal circunstância? Lembre-se de que a cada vários minutos devo enviar várias alterações de tabela do cliente para o servidor e buscar também duas alterações de tabela do servidor.

  2. Eu encontrei um método que é estranho, mas novo. É possível que eu registre todos os procedimentos armazenados executados (para preferências específicas) no cliente e os envie com seus parâmetros em um .sqlarquivo para o servidor e os execute lá? O mesmo acontecerá no servidor e enviado para o cliente. Você acha que este é um método simples, mas útil ou não?

  3. por favor, sugira-me qualquer abordagem útil, se puder. Muito obrigado.

EDIT: Lembre-se que esta é uma sincronização em tempo real e isso a torna especial. Isso significa que quando o usuário cliente estiver usando a tabela, o processo de sincronização com o servidor deve ocorrer a cada vários minutos para que nenhuma das tabelas seja bloqueada.

sql-server data-synchronization
  • 5 respostas
  • 80735 Views
Martin Hope
luqo33
Asked: 2015-05-21 09:19:22 +0800 CST

Ansible: Como alterar a senha raiz do servidor MySQL reprovisionando o servidor

  • 17

Eu provisionei meu servidor com o playbook Ansible. Eu usei o playbook root/bedrock-Ansible .

Uma das tarefas era configurar o servidor mysql junto com a senha do usuário root do mysql.

Agora preciso urgentemente alterar essa senha. Os passos que dei:

  1. Atualizei variáveis ​​para funções do Ansible
  2. Executei o comando ansible-playbook -i hosts/staging server.ymlpara reprovisionar o servidor

Todas as tarefas foram executadas conforme o esperado (sem alterações), mas o script falhou [mariadb | Set root user password]com esta mensagem:

msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials

Meu palpite é que uma vez que a senha de root do MySQL foi definida, o reprovisionamento do servidor não pode alterar essa senha.

É possível alterar a senha de root do MySQL reprovisionando o servidor com o Ansible? Quais são minhas opções?

mysql
  • 5 respostas
  • 41198 Views
Martin Hope
Piotr Findeisen
Asked: 2015-04-04 01:54:35 +0800 CST

Como desabilitar temporariamente as chaves estrangeiras no Amazon RDS PostgreSQL?

  • 17

Estou migrando o ambiente de teste existente para o Amazon RDS PostgreSQL. A estrutura de teste possui um recurso de recarregar dados em determinadas tabelas para um estado anterior. Para isso ele desativa as chaves estrangeiras, exclui os dados existentes, carrega o save state e habilita as chaves estrangeiras novamente.

Atualmente, a estrutura de teste desativa as chaves estrangeiras desativando todos os gatilhos (claro, isso requer superusuário):

alter table tablename disable trigger all;

No RDS, isso falha com:

ERRO: permissão negada: "RI_ConstraintTrigger_a_20164" é um gatilho do sistema

Como posso desabilitar temporariamente as chaves estrangeiras no Amazon RDS PostgreSQL?

Observação: uma pergunta semelhante já foi feita ( PostgreSQL no RDS: como importar dados em massa com restrições de FK? ), mas era especificamente sobre importação offline e a solução também é específica para importação offline.

postgresql foreign-key
  • 1 respostas
  • 12427 Views
Martin Hope
toryan
Asked: 2015-03-16 16:55:53 +0800 CST

Obter saída detalhada do trabalho do SQL Agent

  • 17

Temos um trabalho do SQL Server Agent que executa um plano de manutenção para reindexar todo o banco de dados no servidor. Recentemente, isso falhou, mas o histórico do trabalho não fornece informações suficientes para diagnosticar o problema.

No histórico do trabalho, informa que o trabalho falhou. O trabalho foi invocado pelo usuário foo\bar. A última etapa a ser executada foi a etapa 1 (Rebuild Index).

Na janela de detalhes há várias mensagens no seguinte formato:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

A instrução SQL que está sendo executada está truncada, e eu diria que a saída da instrução também está truncada, impedindo-me de identificar qual instrução específica falhou e por quê. Existe alguma maneira de extrair o texto completo dessas mensagens?

sql-server sql-server-agent
  • 3 respostas
  • 34397 Views
Martin Hope
Rakesh Gaur
Asked: 2015-02-19 13:09:43 +0800 CST

Somos obrigados a lidar com a transação no código C #, bem como no procedimento armazenado

  • 17

Nós realmente exigimos manipulação de transações em c #, bem como processo de armazenamento de banco de dados em ambos os lados

C#:

Using(transaction with transaction scope)
{
     Execute stored proc;
     Transaction. Complete;
}

Procedimento armazenado SQL:

Create process
As
Begin try
    Begin transaction
    Commit
End try
Begin catch
    Rollback
End catch
sql-server t-sql
  • 1 respostas
  • 11252 Views
Martin Hope
Jack Douglas
Asked: 2015-01-18 06:35:30 +0800 CST

Existe uma maneira de inserir várias linhas em uma tabela com valores padrão para todas as colunas?

  • 17

Posso inserir várias linhas em uma tabela com valores padrão para todas as colunas da maneira RBAR :

create table course(course_id serial primary key);

do $$
begin
  for i in 1..100000 loop
    insert into course default values;
  end loop;
end;$$;

Existe uma maneira de fazer o mesmo com uma única instrução SQL?

postgresql default-value
  • 2 respostas
  • 17019 Views
Martin Hope
Levi Botelho
Asked: 2014-12-18 02:54:55 +0800 CST

Visualizando dados de eventos estendidos do SQL Server

  • 17

Ultimamente, tenho explorado o uso de eventos estendidos no SQL Server para me ajudar a comparar e otimizar várias consultas. Até agora, para visualizar os dados do evento, tenho usado o recurso "Assistir dados ao vivo" no SSMS.

O problema que estou tendo é que parece que o recurso Live Events usa um buffer interno, o que significa que às vezes preciso executar uma consulta várias vezes para obter suas informações para exibição na janela. Portanto, tenho uma pergunta em duas partes a fazer:

  1. Existe uma maneira de contornar esse atraso na exibição dos eventos no feed ao vivo? (Estou fazendo isso em um banco de dados local, então o desempenho não é um problema)
  2. O feed ao vivo é a melhor maneira de visualizar dados de eventos estendidos? Existe outra ferramenta no SSMS ou não que se adapte melhor ao meu caso de uso?

ATUALIZAR

Como solicitado, aqui está a sessão:

CREATE EVENT SESSION [Simple Query Benchmarking] ON SERVER 
ADD EVENT sqlserver.sql_batch_completed(SET collect_batch_text=(1)
    ACTION(sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.sql_text)
    WHERE ([package0].[equal_boolean]([sqlserver].[is_system],(0)) AND [package0].[greater_than_uint64]([duration],(1000)))) 
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=1 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=ON,STARTUP_STATE=OFF)
GO
sql-server extended-events
  • 2 respostas
  • 2498 Views
Martin Hope
Decrypted
Asked: 2014-11-30 18:52:49 +0800 CST

Como remover os acentos hebraicos

  • 17

Preciso de um truque de codificação de caracteres para remover marcas de sotaque hebraico.

Amostra antes

בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ

Amostra Depois

בראשית ברא אלהים את השמים ואת הארץ

sql-server collation
  • 4 respostas
  • 1909 Views
Prev
Próximo

Sidebar

Stats

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • 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
    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

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