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
Manngo
Asked: 2017-03-10 23:29:35 +0800 CST

PostgreSQL: colunas geradas

  • 20

O PostgreSQL suporta colunas geradas ? Também conhecido como colunas virtuais . Não estou falando de IDENTITYcolunas .

Não consigo encontrar nenhuma informação sobre esse recurso notável, mas sei que ele está disponível no SQL Server e nas versões mais recentes do MariaDB e MySQL.

O recurso é mencionado no padrão SQL:2003 , e houve alguma discussão nos fóruns do PostgreSQL por volta de 2006, mas não consigo encontrar nada substancial sobre o assunto.

Há alguma discussão sobre o SO, mas é bastante antigo agora, então pode estar desatualizado.

postgresql computed-column
  • 4 respostas
  • 14457 Views
Martin Hope
jcristovao
Asked: 2017-03-04 02:57:26 +0800 CST

Índice exclusivo adiável no postgres

  • 20

Olhando para a documentação do postgres para alter table , parece que as restrições regulares podem ser marcadas como DEFERRABLE(mais concretamente, INITIALLY DEFERRED, que é o que me interessa).

Os índices também podem ser associados a uma restrição, desde que:

O índice não pode ter colunas de expressão nem ser um índice parcial

O que me leva a acreditar que atualmente não há como ter um índice único com condições, como:

CREATE UNIQUE INDEX unique_booking
  ON public.booking
  USING btree
  (check_in, check_out)
  WHERE booking_status = 1;

Ser INITIALLY DEFERRED, ou seja, que a 'restrição' de exclusividade só será verificada ao final da transação (se SET CONSTRAINTS ALL DEFERRED;for utilizada).

Minha suposição está correta e, em caso afirmativo, existe alguma maneira de alcançar o comportamento pretendido?

Obrigado

postgresql index
  • 2 respostas
  • 11739 Views
Martin Hope
Rob V
Asked: 2017-03-03 13:30:04 +0800 CST

Como criar uma linha para todos os dias em um intervalo de datas usando um procedimento armazenado?

  • 20

Gostaria de criar um procedimento armazenado que criará uma linha em uma tabela para todos os dias em um determinado intervalo de datas. O Stored Procedure aceita duas entradas - Uma data de início e uma data de término do intervalo de datas desejado pelo usuário.

Então, digamos que eu tenha uma tabela assim:

SELECT Day, Currency
FROM ConversionTable

Day é um DateTime e Currency é apenas um inteiro.

Para manter as coisas simples, vamos apenas dizer que eu sempre quero que a coluna Moeda seja 1 para cada uma dessas linhas inseridas. Portanto, se alguém inserir '5 de março de 2017' como data de início e '11 de abril de 2017' como data de término, gostaria que as seguintes linhas fossem criadas:

2017-03-05 00:00:00, 1
2017-03-06 00:00:00, 1
...
2017-04-11 00:00:00, 1

Qual é a melhor maneira de codificar o procedimento armazenado para fazer isso? Estou usando o SQL Server 2008 R2 em meu ambiente de teste, mas nosso ambiente real usa o SQL Server 2012, então posso atualizar minha máquina de teste se houver uma nova funcionalidade introduzida em 2012 que facilite essa tarefa.

sql-server t-sql
  • 6 respostas
  • 97185 Views
Martin Hope
Paul White
Asked: 2017-01-07 00:30:16 +0800 CST

Armazenamento de índice não clusterizado em columnstore clusterizado

  • 20

No SQL Server, um índice não clusterizado não exclusivo em uma tabela rowstore incorpora o marcador do objeto base (RID ou chave de clustering) em todos os níveis da estrutura do índice não clusterizado. O marcador é armazenado como parte da chave de índice não clusterizado em todos os níveis de índice.

Por outro lado, se o índice não clusterizado for exclusivo , o marcador estará presente apenas no nível folha do índice - não como parte da chave (o marcador está presente como uma ou mais colunas incluídas, na verdade).

No SQL Server 2016, é possível criar um índice b-tree não clusterizado em uma tabela orientada a colunas (uma que tenha um índice columnstore clusterizado).

  1. Qual é o 'marcador' usado para um índice de árvore b não clusterizado em uma tabela columnstore clusterizada?
  2. As diferenças entre índices não clusterizados exclusivos e não exclusivos descritos acima ainda se aplicam?
sql-server sql-server-2016
  • 1 respostas
  • 1447 Views
Martin Hope
justesting
Asked: 2016-12-20 13:17:38 +0800 CST

Solicitação de atualização usando o alias da tabela

  • 20

Executando esta solicitação:

update table t1 set t1.column = 0 where t1.column2 = 1234

Obtendo este erro:

a coluna "t1" da relação "tabela" não existe

Esta solicitação funciona bem no MySQL.
Por que recebo esse erro no PostgreSQL?

postgresql update
  • 3 respostas
  • 19322 Views
Martin Hope
Joe Obbish
Asked: 2016-12-15 14:20:46 +0800 CST

Por que essa estimativa de cardinalidade de junção é tão grande?

  • 20

Estou experimentando o que considero uma estimativa de cardinalidade incrivelmente alta para a seguinte consulta:

SELECT dm.PRIMARY_ID
FROM
(
    SELECT COALESCE(d1.JOIN_ID, d2.JOIN_ID, d3.JOIN_ID) PRIMARY_ID
    FROM X_DRIVING_TABLE dt
    LEFT OUTER JOIN X_DETAIL_1 d1 ON dt.ID = d1.ID
    LEFT OUTER JOIN X_DETAIL_LINK lnk ON d1.LINK_ID = lnk.LINK_ID
    LEFT OUTER JOIN X_DETAIL_2 d2 ON dt.ID = d2.ID
    LEFT OUTER JOIN X_DETAIL_3 d3 ON dt.ID = d3.ID
) dm
INNER JOIN X_LAST_TABLE lst ON dm.PRIMARY_ID = lst.JOIN_ID;

O plano estimado está aqui . Estou trabalhando em uma cópia de estatísticas das tabelas, portanto não posso incluir um plano real. No entanto, não acho que seja muito relevante para este problema.

O SQL Server estima que 481.577 linhas serão retornadas da tabela derivada "dm". Em seguida, ele estima que 4528030000 linhas serão retornadas após a execução da junção para X_LAST_TABLE, mas JOIN_ID é a chave primária de X_LAST_TIME. Eu esperaria uma estimativa de cardinalidade de junção entre 0 e 481577 linhas. Em vez disso, a estimativa de linha parece ser 10% do número de linhas que eu obteria ao cruzar as tabelas externas e internas. A matemática para isso funciona com arredondamento: 481577*94025*0,1 = 45280277425 que é arredondado para 4528030000.

Estou procurando principalmente uma causa raiz para esse comportamento. Também estou interessado em soluções alternativas simples, mas não sugira alterar o modelo de dados ou usar tabelas temporárias. Essa consulta é uma simplificação da lógica em uma exibição. Eu sei que fazer COALESCE em algumas colunas e juntar nelas não é uma boa prática. Parte do objetivo desta pergunta é descobrir se preciso recomendar que o modelo de dados seja redesenhado.

Estou testando no Microsoft SQL Server 2014 com o estimador de cardinalidade legado ativado. TF 4199 e outros estão ligados. Posso fornecer uma lista completa de sinalizadores de rastreamento, se isso for relevante.

Aqui está a definição de tabela mais relevante:

CREATE TABLE X_LAST_TABLE (
JOIN_ID NUMERIC(18, 0) NOT NULL
    CONSTRAINT PK_X_LAST_TABLE PRIMARY KEY CLUSTERED (JOIN_ID ASC)
);

Também desenvolvi todos os scripts de criação de tabelas junto com suas estatísticas, caso alguém queira reproduzir o problema em um de seus servidores.

Para adicionar algumas das minhas observações, usar o TF 2312 corrige a estimativa, mas isso não é uma opção para mim. TF 2301 não corrige a estimativa. A remoção de uma das tabelas corrige a estimativa. Estranhamente, alterar a ordem de junção de X_DETAIL_LINK também corrige a estimativa. Ao alterar a ordem de junção, quero dizer reescrever a consulta e não forçar a ordem de junção com uma dica. Aqui está um plano de consulta estimado apenas alterando a ordem das junções.

sql-server sql-server-2012
  • 2 respostas
  • 1968 Views
Martin Hope
gareth
Asked: 2016-12-13 07:50:04 +0800 CST

Por que não posso usar variáveis ​​em T-SQL como imagino que posso?

  • 20

Perdoe-me, sou um desenvolvedor que mudou para o mundo do SQL. Achei que poderia melhorar um pouco do SQL adicionando variáveis, mas não funcionou como eu esperava. Alguém pode me dizer por que isso não funciona? Não quero uma solução alternativa, quero saber os motivos pelos quais isso não funciona como imagino que deveria, pois tenho certeza de que há um bom motivo, mas atualmente não salta para mim.

DECLARE @DatabaseName varchar(150)
SET @DatabaseName = 'MyAmazingDatabaseName'

CREATE DATABASE @DatabaseName
GO

USE @DatabaseName
GO
sql-server-2008 t-sql
  • 4 respostas
  • 4857 Views
Martin Hope
5crammed
Asked: 2016-06-08 07:49:03 +0800 CST

Por que um valor de chave primária mudaria?

  • 20

Eu tenho pesquisado o conceito de ROWGUID recentemente e me deparei com esta questão. Essa resposta deu uma visão, mas me levou a uma toca de coelho diferente com a menção de alterar o valor da chave primária.

Meu entendimento sempre foi que uma chave primária deve ser imutável, e minha pesquisa desde a leitura desta resposta forneceu apenas respostas que refletem o mesmo que uma prática recomendada.

Em que circunstâncias um valor de chave primária precisaria ser alterado após a criação do registro?

database-design primary-key
  • 8 respostas
  • 11157 Views
Martin Hope
Geoff Patterson
Asked: 2016-06-03 08:40:12 +0800 CST

Por que o operador de concatenação estima menos linhas do que suas entradas?

  • 20

No trecho de plano de consulta a seguir, parece óbvio que a estimativa de linha para o Concatenationoperador deve ser ~4.3 billion rows, ou a soma das estimativas de linha para suas duas entradas.

No entanto, uma estimativa de ~238 million rowsé produzida, levando a uma estratégia Sort/ abaixo do ideal Stream Aggregateque derrama centenas de GB de dados em tempdb. Uma estimativa logicamente consistente neste caso teria produzido um Hash Aggregate, removido o derramamento e melhorado drasticamente o desempenho da consulta.

Isso é um bug no SQL Server 2014? Existem circunstâncias válidas nas quais uma estimativa menor do que as entradas poderia ser razoável? Que soluções alternativas podem estar disponíveis?

insira a descrição da imagem aqui

Aqui está o plano de consulta completo (anônimo). Não tenho acesso de administrador de sistema a este servidor para fornecer saídas QUERYTRACEON 2363ou sinalizadores de rastreamento semelhantes, mas posso obter essas saídas de um administrador se forem úteis.

O banco de dados está no nível de compatibilidade 120 e, portanto, está usando o novo Estimador de cardinalidade do SQL Server 2014.

As estatísticas são atualizadas manualmente toda vez que os dados são carregados. Dado o volume de dados, estamos usando a taxa de amostragem padrão. É possível que uma taxa de amostragem mais alta (ou FULLSCAN) possa ter um impacto.

sql-server performance
  • 2 respostas
  • 817 Views
Martin Hope
GTF
Asked: 2016-04-06 03:18:27 +0800 CST

Converter POSTGRES TIMESTAMP para TIMESTAMPTZ

  • 20

Eu tenho um banco de dados de série temporal de tamanho decente (~ 50k linhas) em execução no Postgres, com alguns outros dados estruturados (em outra instância de banco de dados) que são muito menores.

Estupidamente, quando inicialmente projetei a coisa, tinha todos os campos como TIMESTAMP WITHOUT TIME ZONE, e agora estou pagando por isso com bugs irritantes relacionados ao fuso horário. Eu quero que tudo seja explícito, então quero converter o campo para TIMESTAMP WITH TIME ZONE. Eu percebo que isso não armazena informações extras, e todos os meus carimbos de data/hora já estão em UTC, então a migração deve ser trivial, mas eu queria saber se há alguma complicação/bloqueio de bloqueio potencial que se mostrará problemático (este é um problema de produção banco de dados com clientes que dependem dele)?

postgresql migration
  • 2 respostas
  • 23983 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