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
leigero
Asked: 2024-01-30 00:38:33 +0800 CST

Como faço para construir um modelo de dados para uma grade de dados XY que consiste em muitos para muitos relacionamentos?

  • 7

Os dados

Digamos que eu tenha uma grade representando todas as pessoas em uma sala e as conversas que elas têm quando falam entre si.

John Susana Brian Rachel
John Resseguro Trabalhar Esportes Filmes
Susana Trabalhar Resmungando Viagem Música
Brian Esportes Viagem Nada Comida
Rachel Filmes Música Comida Auto-depreciativo

O banco de dados

Inicialmente considerei apenas fazer tabelas regulares de PeopleeConversations

A Conversationsmesa seria uma chave etopic participant1 participant2

O dilema

A ordem dos participantes é totalmente irrelevante. Uma simples pergunta “Sobre o que Rachel e Brian conversam” torna-se uma consulta complicada de executar.

Portanto, uma de duas coisas deve ser feita:

  1. Dados redundantes são adicionados ao banco de dados: (Rachel e Brian) ou (Brian e Rachel)
  2. Uma consulta ridiculamente complicada é necessária para consultar os dados não redundantes porque você não sabe se Rachel é participante1 ou participante2.

Seguir com 1 acima cria um modelo de banco de dados O (n ^ 2) insustentável, enquanto 2 parece um pesadelo de DBA tentando consultar dados significativos.

A questão

Como faço para modelar uma estrutura de dados como esta? O SQL é a ferramenta certa para o trabalho ou devo pesquisar algo totalmente diferente?

database-design
  • 2 respostas
  • 54 Views
Martin Hope
HardCode
Asked: 2024-01-30 00:05:27 +0800 CST

Índices de múltiplas colunas com uma coluna de baixa variação

  • 5

Cenário

Eu tenho um produto de software de middleware chamado Pro2SQL da Progress, copiando dados de um banco de dados Progress para um SQL Server em tempo real. Pro2SQL gerencia o esquema do SQL Server por meio do middleware. Os únicos índices criados no SQL Server pelo Pro2SQL são índices de ID de linha exclusivos e não agrupados. Posso ignorar completamente esse ID de linha em minhas consultas, pois ele é usado exclusivamente para simultaneidade Pro2SQL.

Algumas das tabelas contêm mais de 100 milhões de linhas, então preciso criar índices. Em cada tabela copiada do Progress para o SQL Server, existe um campo “domínio”. Este campo possui um de dois valores de três caracteres cada. Vamos chamá-los de 'ABC' ou 'XYZ'. No lado do banco de dados Progress, este domaincampo faz parte do índice.

Pergunta

Adicionar o domaincampo como parte de um índice de vários campos no lado do SQL Server agrega algum valor ou pode piorar as coisas? Por exemplo, posso ter o seguinte índice não clusterizado de vários campos em uma tabela (observe que esses campos são o que torna as linhas na tabela do banco de dados Progress exclusivas):

  • isb_eu_nbr(muito seletivo)
  • isb_part(muito seletivo)
  • isb_serial(muito seletivo)
  • isb_ref(moderadamente seletivo)
  • isb_domain(extremamente não seletivo, apenas 'ABC' ou 'XYZ', a fonte da minha pergunta)

Esta tabela terá cerca de 500.000+ linhas.

Uso

Todas as consultas serão consultas somente leitura. Não haverá inserções, atualizações ou exclusões. Eles são tratados pelo middleware Pro2SQL. Em todas as minhas consultas, terei que adicionar na WHEREcláusula o seguinte:

/* WHERE <tableAbbr>_domain = 'ABC' */

/* Example */
WHERE
    /* Conditions 1 through N */
    AND isb_domain = 'ABC'

/* Another Example, with JOINed tables */
WHERE
    /* Conditions 1 through N */
    AND isb_domain = 'ABC'
    AND ls_domain = 'ABC'
    AND pt_domain = 'ABC'

outras considerações

O fornecedor, Progress, indica que, como há atualizações em tempo real acontecendo constantemente ao longo do dia útil, todas as consultas devem ser sem bloqueio. Então eles realmente sugerem(!!!) NOLOCK. Habilitamos SNAPSHOTno banco de dados, então todas as consultas conectadas diretamente ao servidor serão executadas com SET TRANSATION ISOLATION LEVEL SNAPSHOT, e todas as consultas executadas através de servidores vinculados serão executadas com SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED(aceitando os efeitos colaterais).

ATUALIZADA

Descobri que posso criar índices agrupados e não exclusivos nas tabelas do SQL Server. Além disso, com as sugestões abaixo, posso criar índices filtrados não exclusivos e não agrupados em cluster, onde o filtro estaria no campo <abc>_domainde cada tabela. Então minha pergunta se transformou em:

Devo criar índices agrupados não exclusivos que correspondam aos campos do banco de dados Progress quanto à exclusividade, menos os <abc>_domaincampos e, em seguida, criar índices filtrados não exclusivos e não agrupados que incluam o <abc>_domaincampo em cada tabela?

Eu entendo que um sim/não rígido nem sempre é viável sem realmente ver o banco de dados e os dados. Ainda farei testes de desempenho. Estou procurando mais uma resposta "Eu começaria com ...".

sql-server
  • 2 respostas
  • 38 Views
Martin Hope
Luís de Sousa
Asked: 2024-01-29 21:49:36 +0800 CST

Erro de "versão não suportada" ao restaurar um esquema cujo backup foi feito com a mesma versão em que foi despejado

  • 5

Estou tentando fazer backup e restaurar um esquema de um servidor remoto para um sistema local. Embora pg_dumpe pg_restorerelate a mesma versão, o último falha com o familiar erro "Versão não suportada" (log abaixo). Já vi esse erro antes, quando pg_restoreé uma versão mais antiga que pg_dump, mas nunca quando as versões correspondem. O que poderia ser a causa?

$ psql -h server.somewhere -p 5432 -U user -d database
Password for user user:
psql (16.1 (Ubuntu 16.1-1.pgdg22.04+1), server 14.10)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

database=> SELECT version();
                                                 version
----------------------------------------------------------------------------------------------------------
 PostgreSQL 14.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit
(1 row)

database=> \q

$ pg_dump --version
pg_dump (PostgreSQL) 14.10 (Ubuntu 14.10-1.pgdg22.04+1)

$ pg_restore --version
pg_restore (PostgreSQL) 14.10 (Ubuntu 14.10-1.pgdg22.04+1)

$ pg_dump -h server.somewhere -p 5432 -U user database -n schema_new -F t > ~/temp/schema_new_2024-01-29.backup

$ pg_restore -d wosis ~/temp/schema_new_2024-01-29.backup
pg_restore: error: unsupported version (1.15) in file header
postgresql
  • 1 respostas
  • 31 Views
Martin Hope
Meyssam Toluie
Asked: 2024-01-29 20:04:35 +0800 CST

Como evitar que mensagens de backup sejam impressas

  • 5

Em um dos meus servidores, há muitos bancos de dados dos quais faço backup com o script do Ola. Às vezes acontece que a tarefa de backup falhou. Mas como muitas mensagens foram impressas na mensagem do trabalho não consigo ver a mensagem de erro. Editei o script para evitar mensagens extras. Mas as mensagens incorporadas que o próprio mecanismo sql produz não são evitáveis.

Quero dizer esse tipo de mensagem:

Processed 504 pages for database 'ODS', file 'ODS' on file 1.
Processed 16 pages for database 'ODS', file 'ODS_Regualr_Data' on file 1.
Processed 16 pages for database 'ODS', file 'ODS_SALES_DATA' on file 1.

Existe alguma maneira de dizer para não imprimi-los?

sql-server
  • 2 respostas
  • 86 Views
Martin Hope
J. Mini
Asked: 2024-01-28 01:37:52 +0800 CST

Como posso saber quantas tabelas meu DELETE mudou?

  • 8

Suponha que eu tenha muitas tabelas vinculadas por uma cadeia de ON DELETE CASCADEchaves estrangeiras. Até onde sei e experiência, a exclusão de uma tabela não me dá nenhum aviso de que de fato afetei várias tabelas. Por exemplo, se a exclusão de uma linha table1causar a exclusão de 500 linhas, table2tudo o que o SSMS me dirá é

(1 linha afetada)

Existe alguma maneira de saber quantas tabelas/linhas DELETErealmente foram alteradas? Parece que, em teoria, eu poderia excluir uma linha de uma tabela em um banco de dados suficientemente maligno e, sem saber, excluir 99% dos dados do banco de dados.

sql-server
  • 3 respostas
  • 84 Views
Martin Hope
J. Mini
Asked: 2024-01-27 03:37:43 +0800 CST

Por que devo preferir o Invoke-DbaQuery às suas alternativas?

  • 6

A documentação menciona Invoke-DbaQuerymuitas outras funções semelhantes

Esta função é um comando wrapper Invoke-DbaAsync, que por sua vez é baseado em Invoke-SqlCmd2. Ele foi projetado para ser mais conveniente de usar em um pipeline e para se comportar de maneira consistente com o restante de nossas funções.

É claro que existem outras maneiras de consultar SQL no PowerShell, por exemplo Invoke-Sqlcmd.

Quais são os benefícios de usar Invoke-DbaQueryem vez de Invoke-Sqlcmd, Invoke-Sqlcmd2e Invoke-DbaAsync?

sql-server
  • 1 respostas
  • 66 Views
Martin Hope
Orhan Sönmez
Asked: 2024-01-27 00:09:11 +0800 CST

problema de agrupamento postgreSQL ao comparar um valor de coluna com um determinado valor

  • 8

Suponha que criamos uma tabela e inserimos um registro com o seguinte script.

CREATE TABLE your_table ( your_column VARCHAR COLLATE "tr-TR-x-icu" );
INSERT INTO your_table(your_column) VALUES ('Gider');

Quando executei o script revisado a seguir, obtive o resultado 'diferente'. O resultado deve ser 'igual', pois eu uso o agrupamento "tr-TR-x-icu" da coluna e a parte superior do texto 'Gider' é 'GİDER' em turco.

SELECT 
CASE WHEN UPPER(your_column)=UPPER('Gider') THEN 'equal' 
     ELSE 'not equal' 
END AS result 
FROM your_table;

Quando executei o script a seguir, obtive a resposta correta (ou seja, 'igual').

SELECT 
CASE WHEN UPPER(your_column)=UPPER('Gider' COLLATE "tr-TR-x-icu") THEN 'equal' 
     ELSE 'not equal' 
END AS result 
FROM your_table;

Seria bom se houvesse um método para definir esta propriedade de agrupamento dentro desta sessão.

Por exemplo, adicionando like SET COLLATE...logo antes da consulta.

Desta forma, em vez de escrever UPPER(your_column)=UPPER('Gider' COLLATE "tr-TR-x-icu"), bastaria apenas escrever UPPER(your_column)=UPPER('Gider').

Eu ficaria feliz se alguém pudesse oferecer uma solução.
Muitas felicidades.

postgresql
  • 1 respostas
  • 22 Views
Martin Hope
Amogh
Asked: 2024-01-26 22:33:28 +0800 CST

Por que uma instrução SQL de atualização não faz com que o comprimento da lista de histórico aumente no MySQL?

  • 8

Estou tentando entender por que uma instrução de atualização não faz com que o comprimento da lista de histórico (HLL) aumente quando o banco de dados tem alta carga de gravação. A instrução Select faz com que o HLL cresça no mesmo cenário.

Cenário 1: HLL não está crescendo

  1. Banco de dados MySQL possui 1 tabela com 2 colunas (1 chave primária)
  2. Usando o sysbench para executar atualizações e inserir instruções nesta tabela com 8 threads
  3. Simultaneamente com o carregamento do sysbench, tendo uma transação de longa duração:
> START TRANSACTION;
> UPDATE t1 SET c2 = 'val' WHERE c1 != 'DONE'.
[leaving this terminal open without committing]

Cenário 2: HLL está crescendo (conforme esperado)

  1. Mesma configuração acima: 1 tabela e sysbench executando instruções de gravação na tabela.
  2. Simultaneamente com o carregamento do sysbench, a transação de longa execução é apenas uma instrução SELECT:
> START TRANSACTION;
> SELECT * from t1 WHERE c1 != 'DONE'.
[leaving this terminal open without committing]

Expectativa : O HLL deverá crescer rapidamente em ambos os cenários, uma vez que ambos os cenários deverão utilizar uma visualização de leitura.

Observação Real : O HLL cresce rapidamente apenas no Cenário 2. Para o cenário 1, o HLL permanece quase constante.

Pergunta: Por que esse comportamento? Por que uma instrução de atualização com a condição where não faz com que o HLL cresça?

mysql
  • 1 respostas
  • 33 Views
Martin Hope
Marcus
Asked: 2024-01-26 21:44:30 +0800 CST

A reconstrução/reorganização de um índice no SQL Server libera espaço no arquivo de banco de dados devido à compactação de páginas de dados?

  • 5

Se eu tiver um índice com fator de preenchimento padrão de 100% e as modificações resultarem em uma grande fragmentação interna (divisões de páginas, espaço livre etc.), de modo que muitas páginas fiquem cerca de 60% cheias em vez de 100%, seria uma reconstrução/reorganização de índice compacta os dados em menos páginas de dados, resultando em mais espaço disponível relatado no banco de dados?

Se o anterior for verdadeiro, faz sentido reorganizar os índices antes de executar uma operação de redução para maximizar o espaço ganho pela redução (seguida por outra reorganização após a redução para reduzir a fragmentação causada pela redução)?

Finalmente, o DBCC Shrinkfile compacta as páginas de dados da mesma forma que uma reconstrução ou apenas move as páginas de dados?

sql-server
  • 2 respostas
  • 39 Views
Martin Hope
mcswiggen
Asked: 2024-01-26 19:49:48 +0800 CST

MS SQL - Permissões Mínimas para Visualizar Classificações de Sensibilidade

  • 5

Gostaria de fornecer acesso a alguns grupos de usuários para visualizar as classificações de sensibilidade. Atualmente ele retorna resultados em branco na ferramenta de relatórios ou consultando diretamente a tabela sys.sensitivity_classifications.

Qual é o conjunto mínimo de permissões, padrão ou personalizado, que pode ser usado para fornecer uma visualização somente leitura?

permissions
  • 1 respostas
  • 19 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