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
tasmaniski
Asked: 2012-06-22 01:10:10 +0800 CST

Como criar coluna no banco de dados com string aleatória de valor padrão

  • 16

Posso criar uma coluna na tabela de banco de dados (PostgreSQL) que possui uma string aleatória de valor padrão e como?

Se não for possível, por favor me avise.

postgresql default-value
  • 2 respostas
  • 21138 Views
Martin Hope
m__
Asked: 2012-06-13 00:06:35 +0800 CST

Ordem de classificação especificada na chave primária, mas a classificação é executada em SELECT

  • 16

Estou armazenando os dados do sensor em uma tabela SensorValues ​​. A tabela e a chave primária são as seguintes:

CREATE TABLE [dbo].[SensorValues](
  [DeviceId] [int] NOT NULL,
  [SensorId] [int] NOT NULL,
  [SensorValue] [int] NOT NULL,
  [Date] [int] NOT NULL,
CONSTRAINT [PK_SensorValues] PRIMARY KEY CLUSTERED 
(
  [DeviceId] ASC,
  [SensorId] ASC,
  [Date] DESC
) WITH (
    FILLFACTOR=75,
    DATA_COMPRESSION = PAGE,
    PAD_INDEX = OFF,
    STATISTICS_NORECOMPUTE = OFF,
    SORT_IN_TEMPDB = OFF,
    IGNORE_DUP_KEY = OFF,
    ONLINE = OFF,
    ALLOW_ROW_LOCKS = ON,
    ALLOW_PAGE_LOCKS = ON)
  ON [MyPartitioningScheme]([Date])

No entanto, quando seleciono o valor do sensor válido para um tempo específico, o plano de execução me diz que está fazendo uma classificação. Por que é que?

Eu teria pensado que, como armazeno os valores classificados pela coluna Data, a classificação não ocorreria. Ou é porque o índice não é classificado apenas pela coluna Date, ou seja, não pode assumir que o conjunto de resultados está classificado?

SELECT TOP 1 SensorValue
  FROM SensorValues
  WHERE SensorId = 53
    AND DeviceId = 3819
    AND Date < 1339225010
  ORDER BY Date DESC

Plano de execução

Editar: posso fazer isso em vez disso?

Como a tabela está ordenada DeviceId, SensorId, Date e eu faço um SELECT especificando apenas um DeviceId e um SensorId , o conjunto de saída já deve estar ordenado por Date DESC . Então, eu me pergunto se a seguinte pergunta produziria o mesmo resultado em todos os casos?

SELECT TOP 1 SensorValue
  FROM SensorValues
  WHERE SensorId = 53
    AND DeviceId = 3819
    AND Date < 1339225010

De acordo com @Catcall abaixo, a ordem de classificação não é igual à ordem de armazenamento. Ou seja, não podemos assumir que os valores retornados já estão em uma ordem de classificação.

Editar: tentei esta solução CROSS APPLY, sem sorte

@Martin Smith sugeriu que eu tentasse OUTER APPLY meu resultado nas partições. Encontrei uma postagem no blog ( Índices não agrupados alinhados na tabela particionada ) descrevendo esse problema semelhante e tentei a solução um tanto semelhante à sugerida por Smith. No entanto, sem sorte aqui, o tempo de execução está no mesmo nível da minha solução original.

WITH Boundaries(boundary_id)
AS
(
  SELECT boundary_id
  FROM sys.partition_functions pf
  JOIN sys.partition_range_values prf ON pf.function_id = prf.function_id
  WHERE pf.name = 'PF'
  AND prf.value <= 1339225010
  UNION ALL
  SELECT max(boundary_id) + 1
  FROM sys.partition_functions pf
  JOIN sys.partition_range_values prf ON pf.function_id = prf.function_id
  WHERE pf.name = 'PF'
  AND prf.value <= 1339225010
),
Top1(SensorValue)
AS
(
  SELECT TOP 1 d.SensorValue
  FROM Boundaries b
  CROSS APPLY
  (
    SELECT TOP 1 SensorValue
      FROM SensorValues
      WHERE  SensorId = 53
        AND DeviceId = 3819
        AND "Date" < 1339225010
        AND $Partition.PF(Date) = b.boundary_id
        ORDER BY Date DESC
  ) d
  ORDER BY d.Date DESC
)
SELECT SensorValue
FROM Top1
sql-server primary-key
  • 4 respostas
  • 15885 Views
Martin Hope
Jmoney38
Asked: 2012-06-06 12:52:08 +0800 CST

O que é recuperado do disco durante uma consulta?

  • 16

Pergunta bastante simples, provavelmente respondida em algum lugar, mas não consigo formular a pergunta de pesquisa correta para o Google ...

O número de colunas em uma tabela específica afeta o desempenho de uma consulta, ao consultar um subconjunto dessa tabela?

Por exemplo, se a tabela Foo tiver 20 colunas, mas minha consulta selecionar apenas 5 dessas colunas, ter 20 (versus, digamos, 10) colunas afetará o desempenho da consulta? Para simplificar, suponha que qualquer coisa na cláusula WHERE esteja incluída nessas 5 colunas.

Estou preocupado com o uso do cache de buffer do Postgres, além do cache de disco do sistema operacional. Perco muito a compreensão do design de armazenamento físico do Postgres. As tabelas são armazenadas em várias páginas (o padrão é 8k de tamanho por página), mas não entendo muito bem como as tuplas são organizadas a partir daí. O PG é inteligente o suficiente para buscar apenas no disco os dados que compreendem essas 5 colunas?

postgresql performance
  • 3 respostas
  • 2471 Views
Martin Hope
user6426
Asked: 2012-05-24 02:17:49 +0800 CST

Onde aprender SQL Server Service Broker?

  • 16

Existem bons recursos para aprender o Service Broker? Estou procurando um guia para iniciantes.

sql-server sql-server-2012
  • 3 respostas
  • 2421 Views
Martin Hope
Leigh Riffel
Asked: 2012-03-30 11:42:06 +0800 CST

Execute um script com SQLPlus contendo espaços em branco, ponto e vírgula e barras

  • 16

Ocasionalmente, recebo um script que funcionará bem no SQL Developer ou no Toad, mas requer modificação para ser executado com sucesso no SQL*Plus. Aqui está um exemplo de pior caso contendo várias instruções, cada uma com linhas em branco, ponto e vírgula e barras:

INSERT INTO t1 VALUES ('a

;
/
');

INSERT INTO t1 VALUES ('b

;
/
');

DELETE FROM t1 WHERE c1 = 'c

;
/
';

Por vários motivos, essas instruções precisam ser executadas no SQL*Plus. As linhas em branco são fáceis de resolver com um simples...

set sqlblanklines on

Estou ciente de que o sqlterminatorpode ser alterado e/ou desativado, mas ambos exigiriam modificações no código, o primeiro move o problema sem resolvê-lo e nenhum deles resolve o problema da barra incorporada.

A melhor resposta seria uma maneira de permitir que essas instruções sejam executadas sem modificação alterando o ambiente de alguma forma (como o sqlblanklines faz). Se isso não for possível, talvez haja uma maneira de modificar programaticamente os scripts. Estou tentando evitar alterações manuais.

oracle oracle-11g-r2
  • 4 respostas
  • 67476 Views
Martin Hope
Mark D
Asked: 2012-03-30 06:36:24 +0800 CST

Colunas bit x booleanas

  • 16

Dado que os campos de bits são apenas representações binárias de dados e precisam ser consultados de maneira um pouco "estranha".

Ele realmente fornece algum benefício usando um campo de bits para um valor booleano? Pelo que posso ver, parece sugerir que o espaço é o único benefício real.

mysql database-design
  • 2 respostas
  • 27052 Views
Martin Hope
Leopd
Asked: 2012-03-23 15:26:03 +0800 CST

Replicar RDS-MySQL para um host não amazon?

  • 16

Eu tenho um banco de dados MySQL (5.1) razoavelmente grande em execução na Amazon como uma instância RDS. Estou trabalhando para migrá-lo para fora da Amazon. Para fazer isso sem problemas, gostaria de configurar o novo hardware como uma réplica somente leitura da instância do RDS.

Eu sei que o RDS oferece suporte à replicação no RDS. Existe alguma maneira de configurá-lo para replicar para um host que não esteja no RDS?

mysql replication
  • 3 respostas
  • 9049 Views
Martin Hope
ivanmp
Asked: 2012-03-20 10:03:58 +0800 CST

Diferença monumental no tempo de execução entre as consultas ao usar a dica de consulta RECOMPILE

  • 16

Tenho duas consultas quase idênticas em execução na mesma instância do SQL Server 2005:

  1. A primeira é a SELECTconsulta original gerada pelo LINQ (eu sei, eu sei... não sou o desenvolvedor do aplicativo, apenas o DBA :).
  2. O segundo é exatamente igual ao primeiro, acrescido de um OPTION (RECOMPILE)no final.

Nada mais foi alterado.

O primeiro leva 55 segundos toda vez que é executado.
O segundo leva 2 segundos.

Ambos os conjuntos de resultados são idênticos.

Por que essa dica geraria um ganho tão dramático no desempenho?

A entrada do Books Online em RECOMPILEnão oferece uma explicação muito detalhada:

Instrui o SQL Server Database Engine a descartar o plano gerado para a consulta após sua execução, forçando o otimizador de consulta a recompilar um plano de consulta na próxima vez que a mesma consulta for executada. Sem especificar RECOMPILE, o Mecanismo de Banco de Dados armazena em cache os planos de consulta e os reutiliza. Ao compilar planos de consulta, a dica de consulta RECOMPILE usa os valores atuais de quaisquer variáveis ​​locais na consulta e, se a consulta estiver dentro de um procedimento armazenado, os valores atuais passados ​​para quaisquer parâmetros.

RECOMPILE é uma alternativa útil para criar um procedimento armazenado que usa a cláusula WITH RECOMPILE quando apenas um subconjunto de consultas dentro do procedimento armazenado, em vez de todo o procedimento armazenado, deve ser recompilado. Para obter mais informações, consulte Recompilando procedimentos armazenados. RECOMPILE também é útil quando você cria guias de plano. Para obter mais informações, consulte Otimizando consultas em aplicativos implantados usando guias de plano.

Como minha consulta tem muitas variáveis ​​locais, meu palpite é que o SQL Server é capaz de otimizá-la (sério) quando uso a OPTION (RECOMPILE)dica de consulta.

Onde quer que eu olhe, as pessoas estão dizendo que isso OPTION (RECOMPILE)deve ser evitado. A explicação para isso geralmente é que, usando essa dica, o SQL Server não é capaz de reutilizar esse plano de execução e, portanto, precisa perder tempo recompilando-o sempre.
(Mas) Dada a gigantesca vantagem de desempenho, estou inclinado a pensar que usar essa dica de consulta desta vez seria uma coisa boa.

Devo usá-lo? Se não, existe uma maneira de forçar o SQL Server a usar um plano de execução melhor sem essa dica e sem alterar o aplicativo?

sql-server sql-server-2005
  • 1 respostas
  • 2457 Views
Martin Hope
Googlebot
Asked: 2012-03-03 01:30:47 +0800 CST

Como está o INDEX na chave primária composta no mysql?

  • 16

Ao criar uma chave primária composta para duas ou mais colunas, por exemplo, PRIMARY KEY(col1, col2, col3); será que o sistema INDEXcada coluna individualmente?

A razão pela qual estou fazendo esta pergunta é que, quando usamos UNIQUE INDEX (col1, col2, col3), ele age apenas como INDEXpara a primeira coluna e precisamos criar INDEXs adicionais para outras colunas. Eu quero saber se esse é o caso da chave primária composta também.

mysql index
  • 1 respostas
  • 21195 Views
Martin Hope
Katafalkas
Asked: 2012-02-16 02:17:13 +0800 CST

não é possível remover "GRANT USAGE"

  • 16

Eu estava testando algumas coisas e adicionei um:

grant usage on statistics.* to cptnotsoawesome@localhost identified by 'password';

então agora quando eu faço

show grants for cptnotsoawesome@localhost;

Vejo que um deles é:

Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

Agora eu quero removê-lo, pois acho que é um risco de segurança, então faço o seguinte:

REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Mas ainda mostra essa concessão USAGE na lista de concessões.

Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

Alguma idéia por quê? O que estou fazendo errado?

mysql permissions
  • 3 respostas
  • 35873 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