Displaying posts with tag: Banco de dados (reset)
[PostgreSQL] - Listando as 10 maiores tabelas no PostgreSQL

Para listar as maiores tabelas do seu banco de dados, utilize a consulta abaixo:

WITH table_stats AS ( SELECT schemaname, tablename, pg_relation_size(schemaname || '.'|| tablename) as table_size, (pg_total_relation_size(schemaname || '.'|| tablename) - pg_relation_size(schemaname || '.'|| tablename)) as index_size, pg_total_relation_size(schemaname || '.'|| tablename) as

[PostgreSQL] - Tamanho das tabelas no PostgreSQL

Em muitos casos é preciso saber o espaço em que as tabelas do banco de dados estão utilizando em disco, para fins de monitoramento e decisão de estruturação de banco. Para tal tarefa no PostgreSQL o comando abaixo resolve o problema. SELECT esquema, tabela, pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho, pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total

Conheça o problema do N+1

Você se preocupa com o desempenho das suas aplicações? Então é imprescindível que você saiba o que é o problema do N + 1 e também conheça como identificá-lo e corrigi-lo. Essa é uma grave falha que diversos programadores iniciantes (e até intermediários, por incrível que pareça) não conhecem, causando grande perda de performance em suas aplicações.

O que é o problema do N + 1

Vamos considerar uma base de dados com duas tabelas: uma de usuários e outra de posts, como ilustrado na imagem a seguir.

A tabela Usuários armazena as informações dos usuários, como nome, email, senha etc. A tabela de posts, além dos dados dos posts, como título e conteúdo, …

[Leia mais]
Usando logs de acesso do servidor web como um sistema de armazenamento de banco de dados

Eu usei esse truque há alguns dias, quando lancei o Drupal EngineHack de detecção de sites, e ele está servindo ao seu propósito muito bem.

Meu caso de uso

O EngineHack verifica um site e informa ao usuário se ele foi hackeado ou não. Assim, para cada ferramenta em particular, quero registrar os resultados dessas verificações. Mais importante, eu queria fazer o registro de itens específicos:

  • O timestamp de cada verificação que foi realizada
  • A URL do site que foi verificado
  • Se o servidor Drupal foi comprometido ou não
  • Opcionalmente, o IP do site que efetuou a verificação, para o caso de abuso ou ataque DoS

Tradicionalmente, eu iria criar uma tabela em um banco de dados como MySQL ou um sistema de …

[Leia mais]
[ORACLE] - Verificação os parâmetros de processos, sessões e transações

Verificamos aqui os parâmetros que estão em vigência no nosso ambiente Oracle:

processes=x

session=(1.5 * PROCESSES) + 22

transactions=sessions*1.1

select name, value

from v$spparameter

where name in ('sessions','processes','transactions');

Name

Value

Processes

3000

Sessions

3022

Transactions

select name, value

from v$parameter

where name in ('sessions','

[MS SQL Server] - Otimizando tempo de backup no SQL Server dividindo em diversos arquivos

Utilizando a distribuição para diversas mídias/arquivos de backup é possível melhorar (e muito, dependendo do caso!) a performance de backup de uma base de dados SQL Server.

Geralmente fazemos o backup de uma base para um único arquivo:

-- Selecionamos a MASTER para nao manter a sessao presa em nossa base USE master GO -- Comando de backup comum BACKUP DATABASE [AdventureWorks2008] TO

Identificadores artificiais ou naturais no banco de dados?

Faça essa pergunta em uma mesa de DBA’s ou de arquitetos de software no bar, se afaste, pegue um chopp e assista a um episódio live de Spartacus!

Alguns dizem que se uma chave natural está disponível, ela deve ser utilizada. Eu prefiro pensar que não, não tenho o hábito de usar CPF, RG, dog-tag-id e outros como identificador de uma pessoa num banco de dados.

Meu argumento é que esses campos podem ser únicos mas não são controlados por mim, o freak dev/dba/designer/barista e, se não está sob meu controle eu não sei o que pode acontecer com ele.

Pode ser que o Bolsonado acorde um dia com desejo de colocar uma letra no início de cada RG e aí já viu… Nem disco da Xuxa sendo tocado ao contrario junto a um coral de apitos aztecas pode impedi-lo.

Já a chave artificial é minha, e sob essa ótica artificial, deixa de ser quase pejorativo para ser carinhoso.

“Essa chave aí? Eu que criei. …

[Leia mais]
DatabaseCast: alta disponibilidade na prática

Olá, pessoal! Neste episódio do DatabaseCast, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e os convidados Nilton Pinheiro (@nilton_pinheiro) e Marcelo Fernandes (@marcelodba) colocam a alta disponibilidade para funcionar.

Saiba como o planejamento faz toda a diferença, porquê alinhar a tropa, esperar pelo GO ou NO GO, investir em hardware, configurar um cluster pelo assistente e pela linha de comando e se lembrar de vestir a cueca da sorte no dia D.

[Leia mais]
[MS SQL Server] - UPDATE com incremento

O script abaixo realiza uma tarefa interessante. Através dele é possível atualizar as linhas de uma tabela (ou um conjunto de linhas, caso um filtro seja aplicado) com valores incrementais (o valor inicial e o incremento podem ser definidos).

-- Criando tabela temporária para testesCREATE TABLE #tmp (id int primary key identity(1,1), counter int default 0)GO

-- Inserindo dados na tabela

[MS SQL Server] - Exclusão de colunas com valor default

Ao excluir uma coluna com valor default atribuído em uma tabela, o seguinte erro é disparado pelo SQL Server:

The object 'DF__Contato__ativo__6166761E' is dependent on column 'Ativo'. Isso acontece porque antes de excluir uma coluna de uma tabela, é necessário certificar-se que ela não é referenciada por nenhuma chave ou restrição e também não tenha um valor default associado a ela.Para resolver