Ajax em AÇÂO

Entendendo e
Dominando o PHP

Não me Faca
Pensar

Joomla!: Guia do Operador

Projetos com
DotProject

Pai Rico
Pai Pobre

O Design do
Dia a Dia

Design Para
a Internet

Archive for the ‘SQL’ Category

Monitorar Sql Executadas Mysql

Introdução

Uma das formas de tentar otimizar o desempenho do MySQL é identificar possíveis query que estejam consumindo recursos exageradamente do seu banco de dados, por padrão o MySQL vem com o recurso de log desabilitado por questões de desempenho e segurança!

Ativando os Logs

Para ativar o log do MySQL você precisa editar o arquivo /etc/mysql/my.cnf (no ubuntuu) em outras distribuições e windows você terá que achar o arquivo :) . Após abrir o arquivo descomente a opção log, tal como segue o exemplo abaixo

    #
    # * Logging and Replication
    #
    # Both location gets rotated by the cronjob.
    # Be aware that this log type is a performance killer.

    log = /var/log/mysql/mysql.log

Depois que você ativou os logs será necessário reiniciar o MySQL.

Para ver os logs basta executar no seu terminar o comando.

    tail -f /var/log/mysql/mysql.log

Veja como fica:

image{0}

Referência

http://www.howtogeek.com/howto/database/monitor-all-sql-queries-in-mysql/

ERROR: cannot truncate a table referenced in a foreign key – Postgres

O postgres é um banco de dados relacional sendo assim o TRUNCATE não pode ser executado em uma tabela que seja referenciada por outra tabela através de uma chave estrangeira, então antes de executar o TRUNCATE você precisa desabilitar as TRIGGERS

-- desativa as triggers
UPDATE "pg_class" SET "reltriggers" = 0 WHERE "relname" = 'tabela';
 
-- limpa a tabela
TRUNCATE tabela
 
-- reativa as triggers
UPDATE pg_class SET reltriggers = (SELECT count(*) FROM pg_trigger WHERE pg_class.oid = tgrelid) WHERE relname = 'tabela';

Alterar Quantidade de Caracteres Varchar Postgres

Caso você tenha uma coluna varchar e queira alterar a quantidade de caracteres que ela aceita utilize o seguinte:

ALTER TABLE tabela ALTER COLUMN coluna type varchar(255)

Split String no Mysql

O Problema

Executar o comando split no mysql Read more »

Postgres Permission denied Is Server Running

Introdução

Este fim de semana eu @battisti e o @asfelix tivemos um problema durante o processo de instalação do php com o postgres, depois de fazer todas as configurações o banco continuava a dar a seguinte mensagem de erro:

Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?

Arquivos de Configuração

O postgres possui basicamente 2 arquivos de configurações responsáveis pela conexão, eles são:

  1. postgresql.conf aqui você precisa definir que o seu banco de dados irá receber conexão através de TCP/IP, até a versão 7.9 do postgres esta configuração era feita assim:
    tcpip_socket = true

    A partir da versão 8 isso é feito assim: listen_addresses = ‘*’ port = 5432

  2. pg_hba.conf este é o arquivo que define quem pode acessar o que e de qual forma: para permitir que qualquer IP possa acessar qualquer banco adicione esta linha no arquivo host    all          all         0.0.0.0 0.0.0.0       password Se quiser que apenas 1 IP específico possa acessar a máquina então host    all          all         200.200.200.200/32      password A palavra password define que para você acessar o banco tem que digitar a senha, existe a palavra trust que diz ao banco para nao pedir senha então tenha cuidado com este tipo de configuração

Após mexer nestes dois arquivos reinicie o banco. Para acessar o seu banco através do terminal use o comando: psql -h 200.200.200.200 -U postgres -d banco Fique atento aos firewall pois eles podem barrar a sua conexão com o banco, e mais uma dica para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado: vim /etc/sysconfig/selinux e configure  o SELINUX=disabled

Exemplo de Conexão PHP para Teste

try {
	$db = new PDO("pgsql:host=localhost dbname=datacentro user=postgres password=data1234");
 
	$sql = 'SELECT * FROM pessoa';
	foreach ($db->query($sql) as $row) {
		print $row['cod'] . "\t";
		print $row['nome'] . "\t";
	}
 
} catch (PDOException  $e) {
   print $e->getMessage();
}
die("fim");

Referência

http://www.cyberciti.biz/faq/postgresql-remote-access-or-connection/
http://dickrips.wordpress.com/2009/01/16/apache-php-postgresql-no-centos-e-fedora

Pg_Restore apenas de algumas tabelas

Geralmente temos nos nossos banco de dados uma tabela de log, e ela é o terror dos restores pois o número de registros dela geralmente é igual ou maior do que a soma de todos os registros das demais tabelas do banco, sendo assim, em restores de testes ou apenas de controle não queremos ficar perdendo tempo esperando que os logs sejam restaurados, sendo assim é possível durante um restore pedir que o postgres ignore algumas tabelas para isso: Read more »

Remover Zeros a Esquerda Postgres / SQL

Introdução

Caso você precise remover os zeros a esquerda/direita através de uma SQL você pode usar o ltrm (esquerda) e o ltrim (direita).

Read more »

pg_dump / pg_restore Sem Senha

Introdução

Uma tarefas básica de todo DBA é cuidar para que os backups sejam bem feitos, no postgres as duas ferramentas básicas para isso são os pg_dump e o pg_restore.

Read more »

Recuperar Hora e Minuto de um Campo Timestamp Postgres

Introdução

Recuperar o valor de horas e minutos a partir de um campo do tipo timestamp.

Read more »

Criar Sequência / Auto-Incremento no Postgres

Introdução

Os campos auto-incremento são geralmente utilizados para definir chaves primárias, o Postgre oferece um recurso chamado  sequence para solucionar este problema. O valor de uma seqüência é incrementado em 1 no momento que uma consulta para recuperar o seu valor acontece, ou seja, cada vez que você pede qual o valor atual da seqüência seu valor é incrementado em 1. Read more »

Consulta Sem Acento Postgres

O Problema

A língua portuguesa gera diversos problemas para os DBA, um dos mais comuns esta no fato dos usuários querem digitar Joao (sem acento) em uma caixa de busca e querer que o banco localizar o João (com acento), para solucionar este problema no postgres você pode criar uma function que remove os acentos durante as consultas. Read more »

Criar Tabela Temporária no Postgres

Introdução

Uma tabela temporaria (temporary table) é uma tabela como as demais, exceto pelo fato de que ela somente existe enquanto a sessão na qual ela foi criada estiver ativa, ou seja, assim que a conexão com o banco é fechada a tabela temporária é dropada do banco.  Em geral este tipo de tabela é usado para armazenar o resultado imediato de uma consulta executada anteriormente.

Read more »

Criar Visão Postgres

Introdução

Criar visões em bancos Postgre Read more »

Selecionar Ultimo Registro Inserido em uma Tabela Postgres

O Problema

Precisava selecionar a ultima linha inserida em uma tabela do meu banco de dados. Read more »

Valor Padrão de Campo Timestamp Postgres

O Problema

Cria um campo no postgres que por padrão recebe o timestamp atual.

Conclusão

CREATE TABLE "public"."teste" (
  "test_id SERIAL,
  "test_timestamp" TIMESTAMP WITHOUT TIME ZONE DEFAULT ('now'::text)::timestamp(6) with time zone,
  CONSTRAINT "conveniado_importacao_pkey" PRIMARY KEY("test_id")
) WITH OIDS;

A SQL (’now’::text)::timestamp(6) with time zone vai dizer que o campo ao sofrer qualquer atualização/inserção será alterado para o timestamp corrente.

Mais uma dica, se você quiser saber a versão atual do postgres execute a seguinte query:

SELECT version();

Exibir Query Que Está Sendo Executada No Postgres

Introdução

Estamos aqui na empresa a realizar algumas importações de dados que levam muiiito tempo para serem executadas, ai surge aquelas questões básicas, o banco está traavado?  qual query está sendo executada nesse momento? Read more »

Sidebar3 : Please add some widgets here.