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
Marcello Miorelli
Asked: 2018-10-31 06:18:04 +0800 CST

Como adicionar o botão Debug ao SSMS v18?

  • 77

O Debugbotão está presente nesta versão do SSMS: insira a descrição da imagem aqui

Mas não está presente na versão 18, preview 4: insira a descrição da imagem aqui

Eu tentei de várias maneiras adicionar o Debugbotão ao meu SSMS, mas não obtive sucesso.

Existe uma maneira de adicionar o Debugbotão ao SSMS v18?

sql-server ssms
  • 2 respostas
  • 135075 Views
Martin Hope
St.Antario
Asked: 2015-10-28 23:14:29 +0800 CST

Noções básicas sobre "varredura de heap de bitmap" e "varredura de índice de bitmap"

  • 72

Vou tentar explicar meus mal-entendidos com o seguinte exemplo.

Não entendi os fundamentos do Bitmap Heap Scan Node. Considere a consulta SELECT customerid, username FROM customers WHERE customerid < 1000 AND username <'user100';cujo plano é este:

Bitmap Heap Scan on customers  (cost=25.76..61.62 rows=10 width=13) (actual time=0.077..0.077 rows=2 loops=1)
  Recheck Cond: (((username)::text < 'user100'::text) AND (customerid < 1000))
  ->  BitmapAnd  (cost=25.76..25.76 rows=10 width=0) (actual time=0.073..0.073 rows=0 loops=1)
        ->  Bitmap Index Scan on ix_cust_username  (cost=0.00..5.75 rows=200 width=0) (actual time=0.006..0.006 rows=2 loops=1)
              Index Cond: ((username)::text < 'user100'::text)
        ->  Bitmap Index Scan on customers_pkey  (cost=0.00..19.75 rows=1000 width=0) (actual time=0.065..0.065 rows=999 loops=1)
              Index Cond: (customerid < 1000)

Minha compreensão deste nó :

Conforme explicado lá , os bitmap heap scanblocos de tabela de leitura em ordem sequencial, portanto, não produz sobrecarga de acesso à tabela aleatória que acontece ao fazer apenas Index Scan.

Depois Index Scande feito, o PostgreSQL não sabe como buscar as linhas de forma otimizada, para evitar o desnecessário heap blocks reads(ou hitsse houver um hot cache). Então, para descobrir isso, ele gera a estrutura ( Bitmap Index Scan) chamada bitmapque no meu caso está sendo gerada gerando dois bitmaps dos índices e executando BITWISE AND. Uma vez que o bitmap foi gerado, ele agora pode ler a tabela de forma otimizada em uma ordem sequencial, evitando arquivos desnecessários heap I/O-operations.

Esse é o lugar onde muitas perguntas vêm.

PERGUNTA: Temos apenas um bitmap. Como o PostgreSQL sabe por apenas um bitmap qualquer coisa sobre a ordem física das linhas? Ou gera o bitmap para que qualquer elemento dele possa ser mapeado facilmente para o ponteiro de uma página? Se sim, isso explica tudo, mas é apenas minha suposição.

Então, podemos dizer simplesmente que bitmap heap scan -> bitmap index scané como uma varredura sequencial, mas apenas da parte apropriada da tabela?

postgresql index
  • 2 respostas
  • 37819 Views
Martin Hope
Shaul Behr
Asked: 2014-12-15 06:36:40 +0800 CST

Como juntar uma tabela com uma função com valor de tabela?

  • 73

Eu tenho uma função definida pelo usuário:

create function ut_FooFunc(@fooID bigint, @anotherParam tinyint)
returns @tbl Table (Field1 int, Field2 varchar(100))
as
begin
  -- blah blah
end

Agora eu quero juntar isso em outra tabela, assim:

select f.ID, f.Desc, u.Field1, u.Field2
from Foo f 
join ut_FooFunc(f.ID, 1) u -- doesn't work
where f.SomeCriterion = 1

Em outras palavras, para todos os Fooregistros onde SomeCriterioné 1, quero ver o Foo IDand Desc, juntamente com os valores de Field1e Field2que são retornados ut_FooFuncpara uma entrada de Foo.ID.

Qual é a sintaxe para fazer isso?

sql-server sql-server-2012
  • 2 respostas
  • 143272 Views
Martin Hope
Marcus Junius Brutus
Asked: 2014-11-21 06:40:36 +0800 CST

PostgreSQL: Remova o requisito de senha para o usuário postgres

  • 73

Entendo que, após a instalação, o PostgreSQL não possui senha para seu usuário root do banco de dados (postgres):

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... e é aconselhável configurá-lo com:

alter role postgres password '<<very-secret>>';

(e, em seguida, atualize o pg_hba.confarquivo de acordo)

Minha pergunta é: qual é o SQL a ser usado para voltar à situação anterior quando nenhuma senha era necessária para user postgres.

Em geral, como posso remover o requisito de senha para qualquer função? Não estou perguntando como alterar a senha, mas como remover o requisito de senha ( passwdcoluna nula na tabela pg_shadow).

postgresql linux
  • 4 respostas
  • 172328 Views
Martin Hope
Hannah Vernon
Asked: 2013-03-13 11:59:37 +0800 CST

Algoritmo de configuração MAXDOP para SQL Server

  • 75

Ao configurar um novo SQL Server, uso o seguinte código para determinar um bom ponto de partida para a MAXDOPconfiguração:

/* 
   This will recommend a MAXDOP setting appropriate for your machine's NUMA memory
   configuration.  You will need to evaluate this setting in a non-production 
   environment before moving it to production.

   MAXDOP can be configured using:  
   EXEC sp_configure 'max degree of parallelism',X;
   RECONFIGURE

   If this instance is hosting a Sharepoint database, you MUST specify MAXDOP=1 
   (URL wrapped for readability)
   http://blogs.msdn.com/b/rcormier/archive/2012/10/25/
   you-shall-configure-your-maxdop-when-using-sharepoint-2013.aspx

   Biztalk (all versions, including 2010): 
   MAXDOP = 1 is only required on the BizTalk Message Box
   database server(s), and must not be changed; all other servers hosting other 
   BizTalk Server databases may return this value to 0 if set.
   http://support.microsoft.com/kb/899000
*/


DECLARE @CoreCount int;
DECLARE @NumaNodes int;

SET @CoreCount = (SELECT i.cpu_count from sys.dm_os_sys_info i);
SET @NumaNodes = (
    SELECT MAX(c.memory_node_id) + 1 
    FROM sys.dm_os_memory_clerks c 
    WHERE memory_node_id < 64
    );

IF @CoreCount > 4 /* If less than 5 cores, don't bother. */
BEGIN
    DECLARE @MaxDOP int;

    /* 3/4 of Total Cores in Machine */
    SET @MaxDOP = @CoreCount * 0.75; 

    /* if @MaxDOP is greater than the per NUMA node
       Core Count, set @MaxDOP = per NUMA node core count
    */
    IF @MaxDOP > (@CoreCount / @NumaNodes) 
        SET @MaxDOP = (@CoreCount / @NumaNodes) * 0.75;

    /*
        Reduce @MaxDOP to an even number 
    */
    SET @MaxDOP = @MaxDOP - (@MaxDOP % 2);

    /* Cap MAXDOP at 8, according to Microsoft */
    IF @MaxDOP > 8 SET @MaxDOP = 8;

    PRINT 'Suggested MAXDOP = ' + CAST(@MaxDOP as varchar(max));
END
ELSE
BEGIN
    PRINT 'Suggested MAXDOP = 0 since you have less than 4 cores total.';
    PRINT 'This is the default setting, you likely do not need to do';
    PRINT 'anything.';
END

Percebo que isso é um pouco subjetivo e pode variar com base em muitas coisas; no entanto, estou tentando criar um código abrangente para usar como ponto de partida para um novo servidor.

Alguém tem alguma entrada sobre este código?

sql-server configuration
  • 8 respostas
  • 62769 Views
Martin Hope
KutuluMike
Asked: 2012-12-18 13:17:56 +0800 CST

MERGE um subconjunto da tabela de destino

  • 75

Estou tentando usar uma MERGEinstrução para inserir ou excluir linhas de uma tabela, mas só quero agir em um subconjunto dessas linhas. A documentação para MERGEtem um aviso muito forte:

É importante especificar apenas as colunas da tabela de destino que são usadas para fins de correspondência. Ou seja, especifique as colunas da tabela de destino que são comparadas com a coluna correspondente da tabela de origem. Não tente melhorar o desempenho da consulta filtrando linhas na tabela de destino na cláusula ON, como especificando AND NOT target_table.column_x = value. Fazer isso pode retornar resultados inesperados e incorretos.

mas é exatamente isso que parece que tenho que fazer para fazer meu MERGEtrabalho.

Os dados que tenho são uma tabela padrão de junção de muitos para muitos de itens para categorias (por exemplo, quais itens estão incluídos em quais categorias) assim:

CategoryId   ItemId
==========   ======
1            1
1            2
1            3
2            1
2            3
3            5
3            6
4            5

O que preciso fazer é substituir efetivamente todas as linhas de uma categoria específica por uma nova lista de itens. Minha tentativa inicial de fazer isso se parece com isso:

MERGE INTO CategoryItem AS TARGET
USING (
  SELECT ItemId FROM SomeExternalDataSource WHERE CategoryId = 2
) AS SOURCE
ON SOURCE.ItemId = TARGET.ItemId AND TARGET.CategoryId = 2
WHEN NOT MATCHED BY TARGET THEN
    INSERT ( CategoryId, ItemId )
    VALUES ( 2, ItemId )
WHEN NOT MATCHED BY SOURCE AND TARGET.CategoryId = 2 THEN
    DELETE ;

Isso parece estar funcionando em meus testes, mas estou fazendo exatamente o que o MSDN me avisa explicitamente para não fazer. Isso me deixa preocupado com a possibilidade de ter problemas inesperados mais tarde, mas não consigo ver nenhuma outra maneira de fazer minhas MERGElinhas afetar apenas com o valor de campo específico ( CategoryId = 2) e ignorar linhas de outras categorias.

Existe uma maneira "mais correta" de alcançar esse mesmo resultado? E quais são os "resultados inesperados ou incorretos" sobre os quais o MSDN está me alertando?

sql-server t-sql
  • 1 respostas
  • 89524 Views
Martin Hope
Daniel Serodio
Asked: 2012-07-17 09:31:57 +0800 CST

Devo adicionar um limite de comprimento arbitrário às colunas VARCHAR?

  • 72

De acordo com a documentação do PostgreSQL , não há diferença de desempenho entre VARCHAR, VARCHAR(n)e TEXT.

Devo adicionar um limite de comprimento arbitrário a uma coluna de nome ou endereço ?

Edit: Não é um dupe de:

  • A pesquisa de índice seria visivelmente mais rápida com char vs varchar quando todos os valores são 36 caracteres

Eu sei que o CHARtipo é uma relíquia do passado e estou interessado não apenas no desempenho, mas em outros prós e contras, como Erwin afirmou em sua incrível resposta.

postgresql performance
  • 4 respostas
  • 64647 Views
Martin Hope
prototype
Asked: 2012-07-12 18:41:17 +0800 CST

Existe um nome para esse esquema de banco de dados de valores-chave?

  • 72

Processamos um feed de dados de rotina de um cliente que acabou de refatorar seu banco de dados de um formulário que parece familiar (uma linha por entidade, uma coluna por atributo) para um que parece desconhecido para mim (uma linha por entidade por atributo):

Antes: uma coluna por atributo

ID   Ht_cm   wt_kg   Age_yr  ... 
1      190      82     43    ...
2      170      60     22    ...
3      205      90     51    ...

Depois: uma coluna para todos os atributos

ID    Metric   Value
 1     Ht_cm     190
 1     Wt_kg     82
 1     Age_yr    43
 1      ...
 2     Ht_cm     170
 2     Wt_kg     60
 2     Age_yr    22
 2     ...
 3     Ht_cm     205
 3     Wt_kg     90
 3     Age_yr    51
 3     ...

Existe um nome para essa estrutura de banco de dados? Quais são as vantagens relativas? A maneira antiga parece mais fácil de colocar restrições de validade em atributos específicos (não nulos, não negativos, etc.) e mais fácil de calcular médias. Mas posso ver como pode ser mais fácil adicionar novos atributos sem refatorar o banco de dados. Esta é uma forma padrão/preferida de estruturar dados?

database-design schema
  • 5 respostas
  • 13578 Views
Martin Hope
Rachel
Asked: 2012-04-18 05:33:15 +0800 CST

Por que as pessoas recomendam não usar o nome "Id" para uma coluna de identidade?

  • 73

Fui ensinado a não usar o nome Idpara a coluna de identidade de minhas tabelas, mas ultimamente tenho usado de qualquer maneira porque é simples, curto e muito descritivo sobre o que os dados realmente são.

Já vi pessoas sugerirem prefixar Ido nome da tabela, mas isso parece dar mais trabalho para a pessoa que escreve as consultas SQL (ou o programador, se você estiver usando um ORM como o Entity Framework), principalmente em nomes de tabela mais longos, como CustomerProductIdouAgencyGroupAssignementId

Um fornecedor terceirizado que contratamos para criar algo para nós nomeou todas as suas colunas de identidade Identapenas para evitar o uso de Id. A princípio, pensei que eles faziam isso porque Idera uma palavra-chave, mas quando examinei, descobri que Idnão é uma palavra-chave no SQL Server 2005, que é o que estamos usando.

Então, por que as pessoas recomendam não usar o nome Idpara uma coluna de identidade?

Editar: Para esclarecer, não estou perguntando qual convenção de nomenclatura usar ou argumentos para usar uma convenção de nomenclatura sobre a outra. Eu só quero saber por que é recomendado não usar Idpara o nome da coluna de identidade.

Sou um único programador, não um dba, e para mim o banco de dados é apenas um local para armazenar meus dados. Como costumo criar pequenos aplicativos e normalmente uso um ORM para acesso a dados, é muito mais fácil trabalhar com um nome de campo comum para o campo de identidade. Quero saber o que estou perdendo ao fazer isso e se há algum motivo realmente bom para não fazer isso.

naming-convention identity
  • 10 respostas
  • 23215 Views
Martin Hope
BrunoLM
Asked: 2011-10-01 05:30:04 +0800 CST

Como selecionar a primeira linha de cada grupo?

  • 77

Tenho uma tabela assim:

 ID |  Val   |  Kind
----------------------
 1  |  1337  |   2
 2  |  1337  |   1
 3  |   3    |   4
 4  |   3    |   4

Eu quero fazer um SELECTque retornará apenas a primeira linha para cada um Val, ordenando por Kind.

Saída de amostra:

 ID |  Val   |  Kind
----------------------
 2  |  1337  |   1
 3  |   3    |   4

Como posso construir esta consulta?

oracle greatest-n-per-group
  • 6 respostas
  • 410812 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