Archive for the ‘PostgreSQL’ Tag

PostgreSQL: Hapus Record Lambat?

Hari ini saya mencoba menghapus sebuah record dari tabel pada PostgreSQL yang mempunyai kebergantungan (dependent) data yang lumayan banyak. Hasilnya, bermenit2 waktu yg dibutuhkan untuk manghapus satu record. Ya, satu record.

Setelah saya telusuri dengan “explain analyze” ternyata ada beberapa data yg memiliki ketergantungan (dependency) membutuhkan waktu yang lama. Hm… Mengapa? Karena tabel tersebut tidak memiliki index yang sesuai.

Pantas saja…. ūüė¶

Iklan

Pilih mana distinct atau group by?

Tadi siang mecoba mencari daftar nama kota yg ada dlm tabel pelanggan dg query:

select distinct kota from pelanggan;

dari ratusan ribu record menghasilakan puluhan ribu baris dalam dua puluhan detik.

lalu saya coba:

select kota from pelanggan
group by kota;

yg ini sekitar dalam dua detik!

wuich! 10x lebih cepat.

PostgreSQL: Disable – Enable Trigger

Di dalam tabel “tableq” yg saya buat ada triggerBEFORE UPDATE” dg nama “on_update” yg bertujuan untuk memberikan nilai tertentu pd sebuah field dlm tabel itu sendiri secara otomatis, yakni dlm fungsi “pls_update_the_field“.

Namun suatu ketika saya ingin mengubah (update) harus tanpa menjalankan “on_update“. Cara paling “gampang” adalah me-comment perintah-2 dlm. fungsi “pls_update_the_field” dan menyisakan “return new“.

Cara lain adalah dg perintah SQL:
ALTER TABLE tabelq DISABLE TRIGGER on_update;

Dg. perintah di atas, saya tidak perlu lagi mengubah isi fungsi “pls_update_the_field“. Dan untuk mengembalikannya:
ALTER TABLE tabelq ENABLE TRIGGER on_update;

Pengantar PostgreSQL #2

SQL

Membuat tabel
# CREATE TABLE teriakannya (
nama VARCHAR(60) NOT NULL,
situs VARCHAR(256),
pesan TEXT NOT NULL,
waktu TIMESTAMP NOT NULL DEFAULT now()
);

Menambah baris rekaman
# INSERT INTO teriakannya VALUES ('ade','www.ade.web.id','Salam kenal');

Melihat isi table:
# SELECT * from teriakannya;

nama | situs | pesan | waktu
------+----------------+-------------+----------------------------
ade | http://www.ade.web.id | Salam kenal | 2008-12-06 22:26:59.217386
(1 row)

Memperbarui isi data
# UPDATE teriakannya SET nama='adesaja' WHERE nama='ade';

Menghapus baris rekaman
# DELETE FROM teriakannya where nama='ade';

Membuat view
# CREATE VIEW viewq AS SELECT nama,situs,pesan,waktu, to_char(waktu,'DD-MM-YYYY') as tgl, to_char(waktu,'HH24:MI:SS') as jam FROM teriakannya WHERE waktu>=current_timestamp - interval '2 days ORDER BY WAKTU DESC';

View digunakan sbg pengganti perintah SELECT yg berulang-2 atau untuk menutupi pekerjaan yg sebenarnya.

Menampilkan hasil view
# SELECT * FROM viewq;

Menyertakan bahasa prosedural PL/PGSQL
# CREATE LANGUAGE 'PLPGSQL';

Membuat fungsi PL/PGSQL
# create or replace function simpan_pesan (in_nama varchar, in_situs varchar, in_pesan text)
returns void as $$
begin
insert into teriakannya values (in_nama, in_situs, in_pesan);
end;
$$
language 'plpgsql';

Membuat fungsi trigger:
# CREATE OR REPLACE FUNCTION hapus_data()
RETURNS trigger AS
$BODY$
begin
delete from teriakannya where waktu
return NEW;
end;
$BODY$
LANGUAGE 'plpgsql' ;

Membuat trigger:
# CREATE TRIGGER on_insert
AFTER INSERT
ON teriakannya
FOR EACH ROW
EXECUTE PROCEDURE hapus_data()

Pengantar PostgreSQL #1

Melanjutkan tulisan-2 sebelumnya ttg postgres, kali ini adalah tulisan tentang (seri) Pengantar PostgreSQL. Bahasannya tidak mendalam (saya juga baru belajar) dari proses instalasi sampai mebuat aplikasi web berbasis PHP-Postgre-Ajax.

Yuk kita mulai….

Apa itu PostgreSQL?

PostgreSQL atau postgres adalah salah satu RDMS open¬≠source dg lisensi BSD yg paling banyak digunakan di dunia. Penjelasan lebih lengkap tentu bisa baca di situsnya. ūüėÄ

Fitur utama yg dimiliki adalah:

  • complex queries
  • foreign keys
  • triggers
  • views
  • transactional integrity
  • multiversion concurrency control

Selain itu postgres bisa dikembangkan oleh pengguna dg menambahkan:

  • data types
  • functions
  • operators
  • aggregate functions
  • index methods
  • procedural languages

Instal PostgreSQL di Ubuntu

Dg. baris perintash (Terminal) ketik saja:

$ sudo apt-get install postgresql postgresql-common postgresql-client
(disarankan juga untuk menginstal: postgresql-doc)

Untuk Linux-Apache-PHP-Postgre instal paket-2 berikut:
apache2
php5
php5-pgsql

(disarankan juga untuk menginstal: php-doc)

Tool
pgadmin3
phppgadmin

Agar bisa diakses dari luar (server) maka perlu mengisi kata sandi pengguna postgres di sistem database (bukan pengguna di Linux).

Masuk ke sistem database sbg pengguna Linux, postgres:
$ sudo ­u postgres psql postgres
Ganti kata sandi postgres di sistem database:
# ALTER USER postgres WITH PASSWORD 'KaTa54nd1';
\q

Cobalah masuk ke sistem database:
$ psql -U postgres -h localhost
lalu masukkan kata sandi di atas. Bisa?

Membuat pengguna baru, database dengan baris perintah

Membuat database baru:
$ sudo -u postgres createdb
Membuat pengguna baru:
$ sudo -u postgres createuser --superuser $USER

Membuat database untuk pengguna Linux:
$ createdb $USER

Membuat database baru dari baris perintah:
$ createdb dbq

Membuat pengguna ‚Äúbiasa‚ÄĚ
$ createuser -D -R -P penggunaq

Membuat database untuk pengguna lain
$ createdb -O penggunaq dbnya

Masuk ke database
$ psql dbq
atau
$ psql -U penggunaq -h localhost dbnya

https://help.ubuntu.com/community/PostgreSQL

%d blogger menyukai ini: