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
oriaj
Asked: 2016-10-28 11:41:20 +0800 CST

Qual é a diferença entre uma atualização posterior e uma atualização anterior no PostgreSQL

  • 16

Qual é a diferença entre uma atualização posterior e uma atualização anterior no PostgreSQL? Não consegui entender a diferença entre after updatee before updateporque parece que a função sempre foi executada antes da atualização.

Então fiz o seguinte exemplo:

Fiz uma função que atualiza uma tabela quando o status é typingmas com um atraso de 10 segundos.

CREATE OR REPLACE FUNCTION fai_prueba()
  RETURNS trigger AS
$BODY$
begin
    if new.status = 'Typing' then
        update image set status = 'ToTyping', path = 'Real path' from pg_sleep(5) where id = old.id;
    end if;
    return null;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION fai_prueba()
  OWNER TO postgres;

então eu tenho o seguinte gatilho

create trigger tai 
after update on image 
for each row execute procedure fai_prueba();

mas quando executo um UPDATE a consulta não acaba até acabar o atraso

UPDATE image 
    SET  path='fake path'
       , status= 'Typing' 
WHERE id=5;

>Query returned successfully: 0 rows affected, 10042 ms execution time.

Então, é possível que a consulta de atualização termine antes do gatilho?

postgresql trigger
  • 1 respostas
  • 12067 Views
Martin Hope
chiastic-security
Asked: 2016-09-29 02:55:44 +0800 CST

Por que essa consulta sqlite é muito mais lenta quando eu indexo as colunas?

  • 16

Eu tenho um banco de dados sqlite com duas tabelas, cada uma com 50.000 linhas, contendo nomes de pessoas (falsas). Eu construí uma consulta simples para descobrir quantos nomes existem (nome próprio, inicial do meio, sobrenome) que são comuns a ambas as tabelas:

select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;

Quando não há índices, exceto nas chaves primárias (irrelevantes para esta consulta), ele é executado rapidamente:

[james@marlon Downloads] $ time sqlite3 generic_data_no_indexes.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;"
131

real    0m0.115s
user    0m0.111s
sys     0m0.004s

Mas se eu adicionar índices às três colunas em cada tabela (seis índices no total):

CREATE INDEX `idx_uk_givenname` ON `fakenames_uk` (`givenname` )
//etc.

então corre dolorosamente devagar:

[james@marlon Downloads] $ time sqlite3 generic_data.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;"
131

real    1m43.102s
user    0m52.397s
sys     0m50.696s

Existe alguma rima ou razão para isso?

Aqui está o resultado EXPLAIN QUERY PLANpara a versão sem índices:

0|0|0|SCAN TABLE fakenames_uk
0|1|1|SEARCH TABLE fakenames_usa USING AUTOMATIC COVERING INDEX (middleinitial=? AND surname=? AND givenname=?)

Isso é com índices:

0|0|0|SCAN TABLE fakenames_uk
0|1|1|SEARCH TABLE fakenames_usa USING INDEX idx_us_middleinitial (middleinitial=?)
performance index
  • 1 respostas
  • 17517 Views
Martin Hope
sal
Asked: 2016-09-12 11:53:18 +0800 CST

Por que a Oracle não tem nolock?

  • 16

No MS SQL Server nolockpode ser usado para o efeito.

Por que não podemos usá-lo no Oracle e no plsql?

sql-server oracle
  • 1 respostas
  • 37348 Views
Martin Hope
user99201
Asked: 2016-08-19 14:32:50 +0800 CST

Compressão em uma pilha

  • 16

A seguir, um parágrafo do Microsoft Docs :

Novas páginas alocadas em um heap como parte das operações DML não usarão a compactação PAGE até que o heap seja reconstruído. Recrie o heap removendo e reaplicando a compactação ou criando e removendo um índice clusterizado.

Não consigo entender por que esse é o caso. Se eu tiver um heap com uma configuração de compactação especificada, por que ele não seria aplicado a uma página que pertence à tabela?

Obrigado

sql-server compression
  • 2 respostas
  • 2092 Views
Martin Hope
Nishant
Asked: 2016-07-03 00:45:28 +0800 CST

Quais são as melhores práticas em relação às tabelas de pesquisa em bancos de dados relacionais?

  • 16

As tabelas de pesquisa (ou tabelas de código , como algumas pessoas as chamam) geralmente são uma coleção dos possíveis valores que podem ser fornecidos para uma determinada coluna.

Por exemplo, suponha que temos uma tabela de consulta chamada party(destinada a armazenar informações sobre partidos políticos) que possui duas colunas:

  • party_code_idn, que contém valores numéricos gerados pelo sistema e (sem significado de domínio de negócios ) funciona como um substituto para a chave real.
  • party_code, é a chave real ou “natural” da tabela porque mantém valores que possuem conotações de domínio de negócios .

E digamos que tal tabela retenha os dados que seguem:

 +----------------+------------+
 | party_code_idn | party_code |
 +----------------+------------+
 |              1 | Republican |
 |              2 | Democratic |
 +----------------+------------+

A party_codecoluna, que mantém os valores 'Republican' e 'Democratic', sendo a chave real da tabela, é configurada com uma restrição UNIQUE, mas opcionalmente adicionei party_code_idne defini como o PK da tabela (embora, logicamente falando , party_codepode funcionar como a CHAVE PRIMÁRIA [PK]).

Pergunta

Quais são as melhores práticas para apontar para valores de pesquisa de tabelas de transação ? Devo estabelecer referências FOREIGN KEY (FK) (a) diretamente ao valor natural e significativo ou (b) a valores substitutos?

A opção (a) , por exemplo,

 +---------------+------------+---------+
 | candidate_idn | party_code |  city   |
 +---------------+------------+---------+
 |             1 | Democratic | Alaska  |
 |             2 | Republican | Memphis |
 +---------------+------------+---------+

tem as seguintes propriedades 1 :

  1. Legível para o usuário final (+)
  2. Fácil de importar-exportar entre sistemas (+)
  3. Difícil alteração do valor pois necessita alteração em todas as tabelas referentes (-)
  4. Adicionar novo valor não custa caro (=)

Acho que é quase como “ passar por valor ”, para fazer uma analogia da chamada de função no jargão de programação de aplicativos.

A opção (b) , por exemplo,

 +---------------+----------------+---------+
 | candidate_idn | party_code_idn |  city   |
 +---------------+----------------+---------+
 |             1 |              1 | Alaska  |
 |             2 |              2 | Memphis |
 +---------------+----------------+---------+

tem as propriedades abaixo:

  1. Não legível para o usuário final (-)
  2. Difícil de importar-exportar , pois precisamos desreferenciar (-)
  3. Fácil de alterar valores, pois estamos armazenando referências apenas em tabelas de transações (+)
  4. Adicionar novo valor não custa caro (=)

É muito semelhante a “ passar por referência ”, se comparar a chamada de função no jargão de programação de aplicativos.

A importação-exportação também pode ser feita de uma maneira diferente, ou seja, apenas preenchendo a tabela de consulta novamente e, em seguida , propagando novamente a coluna substituta. Espero estar acertando, isso é algo que acabei de ouvir como uma possibilidade.

1. Observe que +, -e =indique o benefício dessas propriedades.

Pergunta

Muito importante: existe uma diferença entre uma tabela de pesquisa (ou código ) e uma referência FK se formos apenas usar a última abordagem? Acho que funcionam do mesmo jeito.

Recursos relacionados

  • Qual a importância das tabelas de pesquisa?

  • Práticas recomendadas com tabelas de código ou pesquisa

  • Tabelas de pesquisa Tabelas de banco de dados de práticas recomendadas ou enumerações

database-design foreign-key
  • 3 respostas
  • 13969 Views
Martin Hope
usr
Asked: 2016-07-01 05:34:40 +0800 CST

É legal o SQL Server preencher colunas PERSISTED com dados que não correspondem à definição?

  • 16

Estou acompanhando esta questão sobre valores estranhos em uma PERSISTEDcoluna computada. A resposta faz algumas suposições sobre como esse comportamento surgiu.

Estou perguntando o seguinte: isso não é um bug definitivo? As PERSISTEDcolunas podem se comportar dessa maneira?

DECLARE @test TABLE (
    Col1 INT,
    Contains2 AS CASE WHEN 2 IN (Col1) THEN 1 ELSE 0 END PERSISTED) --depends on Col1

INSERT INTO @test (Col1) VALUES
    (ABS(CHECKSUM(NEWID()) % 5)),
    (ABS(CHECKSUM(NEWID()) % 5)),
    (ABS(CHECKSUM(NEWID()) % 5)),
    (ABS(CHECKSUM(NEWID()) % 5)),
    (ABS(CHECKSUM(NEWID()) % 5))

SELECT * FROM @test --shows impossible data

UPDATE @test SET Col1 = Col1*1 --"fix" the data by rewriting it

SELECT * FROM @test --observe fixed data

/*
Col1    Contains2
2   0
2   0
0   1
4   0
3   0

Col1    Contains2
2   1
2   1
0   0
4   0
3   0
*/

Observe que os dados parecem "impossíveis" porque os valores da coluna calculada não correspondem à sua definição.

É bem conhecido que funções não determinísticas em consultas podem se comportar de maneira estranha, mas aqui isso parece violar o contrato de colunas computadas persistentes e, portanto, deveria ser ilegal.

Inserir números aleatórios pode ser um cenário artificial, mas e se estivéssemos inserindo NEWID()valores ou SYSUTCDATETIME()? Acho que essa é uma questão relevante que pode se manifestar de forma prática.

sql-server sql-server-2014
  • 2 respostas
  • 537 Views
Martin Hope
dpolaristar
Asked: 2016-06-07 08:20:27 +0800 CST

Projetando um banco de dados para um domínio de negócios de videogame com vários relacionamentos muitos-para-muitos

  • 16

Sou relativamente novo em design de banco de dados e decidi criar meu próprio banco de dados hipotético para praticar. No entanto, estou tendo problemas para modelá-lo e normalizá-lo, pois estimo que existam vários relacionamentos muitos-para-muitos (M:N).

Descrição geral do cenário

O banco de dados destina-se a reter dados sobre várias pessoas que trabalharam na série Zelda. Quero acompanhar o (s) console(s) em que um jogo pode ser jogado, os funcionários que participaram do desenvolvimento dos jogos , os trabalhos que o funcionário tinha (muitos funcionários trabalharam em diferentes trabalhos em vários jogos ), etc.

Regras do negócio

  • Vários funcionários podem trabalhar em vários jogos .
  • Vários jogos podem estar no mesmo console .
  • Múltiplos Consoles podem ser uma plataforma para o mesmo Jogo .
  • Vários funcionários podem ter o mesmo trabalho .
  • Um Empregado pode ter vários Trabalhos .
  • Um Jogo pode ter vários Funcionários .
  • Um jogo pode ter vários tipos de trabalhos em seu desenvolvimento
  • Vários jogos podem ter o mesmo tipo de trabalho anexado.
  • Um console pode ter várias pessoas trabalhando nele.
  • Uma pessoa pode trabalhar em vários consoles .

Nomes de atributos e valores de amostra

  • Nome do funcionário , que pode ser dividido em nome e sobrenome (por exemplo, “John” e “Doe” )
  • Título do jogo (por exemplo “Ocarina of Time”)
  • Cargo (por exemplo “Level Design”, “Diretor”, “Composição”, “Level Designer”, “Programador”, “Localização”, etc.).
  • Nome do console (por exemplo, “Game Boy Advance”)

O problema

Até agora, parece que não importa o que eu projete, há redundâncias de dados e relacionamentos M:N entre os tipos de entidade de interesse em todos os lugares. No entanto, sinto que os designers de banco de dados devem se deparar com esse tipo de problema o tempo todo, portanto, deve haver uma solução.


Obs : estou conseguindo achar bem os dados para preencher a tabela, o problema é organizar em um banco de dados com tabelas de forma normalizada.

database-design normalization
  • 1 respostas
  • 5919 Views
Martin Hope
James Jenkins
Asked: 2016-05-07 08:29:31 +0800 CST

Blockchain (Bitcoin) como banco de dados?

  • 16

Eu estava lendo este artigo da BBC News e o seguinte trecho me chamou a atenção. Parece Grupos de Disponibilidade Always On ou Espelhamento de Alta Disponibilidade, talvez com segurança incluída automaticamente.

O blockchain é uma solução de banco de dados potencialmente viável para aplicativos modernos de alto volume de transações?

É muito fácil ver seu valor para transações de baixo volume, como registros médicos pessoais, mas e os bancos de dados de alto volume?

O que é blockchain?

Blockchains dependem de criptografia para permitir que um conjunto de computadores faça alterações em um registro global sem precisar de um ator central.

A remoção do intermediário reduz os custos em quase todos os setores.

O blockchain é um livro-razão que registra tudo o que acontece com uma coleção de dados conhecida como "bloco" em ordem cronológica ou "cadeia".

Como moeda, esse é um recurso importante porque permite que os usuários tenham certeza de que seu dinheiro digital é único, da mesma forma que cada nota em sua carteira é única.

“A tecnologia Blockchain será a forma como criamos ativos porque permite que você transfira informações digitais sem copiar”, diz Adam Ludwin, executivo-chefe da Chain.com, que constrói redes blockchain.

O Blockchain pode ser usado para rastrear o histórico de todos os tipos de informações e manter seu valor, então, por exemplo, os médicos podem usá-lo para atualizar registros médicos.

Como cada alteração em um blockchain é feita simultaneamente em toda a rede, nenhuma informação é perdida e, como as alterações não podem ser desfeitas, o sistema mantém sua transparência. Uma chave especial é necessária para fazer alterações em cada bloco, para que os indivíduos possam manter seus registros seguros protegendo essa chave.

database-design normalization
  • 4 respostas
  • 5694 Views
Martin Hope
robertpostill
Asked: 2016-05-02 16:43:53 +0800 CST

Como posso despejar todas as tabelas em CSV para um esquema PostgreSQL?

  • 16

Eu tenho um banco de dados com muitos esquemas e quero despejar cada um dos conteúdos da tabela em CSV. Estou ciente do comando COPY, mas não tenho certeza de como criar um script para ler todas as tabelas em um esquema e executar o COPY nelas.

postgresql backup
  • 2 respostas
  • 25249 Views
Martin Hope
gotqn
Asked: 2016-03-18 08:03:40 +0800 CST

Como usar COLUMNS_UPDATED para verificar se alguma de determinadas colunas está atualizada?

  • 16

Eu tenho uma tabela com 42 colunas e um gatilho que deve fazer algumas coisas quando 38 dessas colunas forem atualizadas. Então, preciso pular a lógica se as 4 colunas restantes forem alteradas.

Eu posso usar a função UPDATE() e criar uma grande IFcondição, mas prefiro fazer algo mais curto. Usando COLUMNS_UPDATED posso verificar se todas as colunas estão atualizadas?

Por exemplo, verificando se as colunas 3, 5 e 9 estão atualizadas:

  IF 
  (
    (SUBSTRING(COLUMNS_UPDATED(),1,1) & 20 = 20)
     AND 
    (SUBSTRING(COLUMNS_UPDATED(),2,1) & 1 = 1) 
  )
    PRINT 'Columns 3, 5 and 9 updated';

insira a descrição da imagem aqui

Portanto, valor 20para coluna 3e 5, e valor 1para coluna 9porque está definido no primeiro bit do segundo byte. Se eu alterar a instrução para ORela, verificará se as colunas 3e / 5ou coluna 9estão/estão atualizadas?

Como pode aplicar ORa lógica no contexto de um byte?

sql-server t-sql
  • 1 respostas
  • 26376 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