Tag: mysql

Perbedaan UNION dan UNION ALL pada SQL

Untuk menggabungkan isi dari dua tabel atau lebih sering kita menggunakan UNION. Namun sesungguhnya di SQL terdapat dua jenis UNION, yaitu UNION dan UNION ALL. Secara gambar himpunan dapat kita lihat perbedaan seperti dibawah:

UNION
UNION
UNION ALL
UNION ALL

Dari gambar di atas dapat kita ketahui bahwa pada UNION data yang sama akan ditampilkan satu kali saja. Namun pada UNION ALL data yang sama akan tetap ditampilkan. Berikut contoh di Query mySQL:

Untuk UNION:

SELECT nama_data FROM data_baru WHERE status = 'ok'
UNION
SELECT nama_data FROM data_lama WHERE status = 'ok'

sedangkan isi dari tabel data_baru  adalah sebagai berikut:

id nama_data status
1 Data 1 failed
2 Data 2 failed
3 Data 3 ok
4 Data 4 ok

Dan isi dari tabel data_lama adalah sebagai berikut:

id nama_data status
1 Data 1 failed
2 Data 2 failed
3 Data 3 ok
4 Data 4 ok

Dan ketika kita menggunakan query UNION hasilnya:

nama_data
Data 3
Data 4

Untuk UNION ALL query nya sebagai berikut:

SELECT nama_data FROM data_baru WHERE status = 'ok'
UNION ALL
SELECT nama_data FROM data_lama WHERE status = 'ok'

Untuk isi tabel data_baru dan data_lama sama dengan di atas, maka saat dilakukan query tersebut, hasilnya adalah sebagai berikut:

nama_data
Data 3
Data 3
Data 4
Data 4

Semoga bermanfaat dan menjadi catatan kami.

Iklan

MySQL table ‘IN USE’ fix

Salah satu table dari database kami muncul pesan “IN USE”, karena tidak sempat discreenshoot, kami ambil/copy kan dari google screen yang mana kasus nya hampir sama. Beberapa orang sempat menyarankan, copy file bla-bla dan bla-bla dari windows ke linux, pokoknya saya gak mudeng caranya (karena menyangkut window-window), jadi pengennya gak pakai saran windows-windowsan namun pakai cara lain yang lebih sederhana dan tidak melibatkan windows.

table in use
Contoh: table IN USE, gambar di copy dari http://www.hostingformula.net/wp-content/uploads/2009/02/table_in_use.jpg

Maka cara mengatasi masalah tersebut yang lebih sederhana adalah:

  • Pilih tabel yang bermasalah, click centang tabel tersebut.
Centang tabel yang bermasalah
Centang tabel yang bermasalah
  • Pilih Action “repair table”, dan execute dengan cara klik “Go” di bagian bawah.
Pilih repair table
Pilih repair table
  • Abaikan warning, cek kembali tabel bersangkutan. Insya ALLAH kembali normal.

Walhamdulillah.

Selisih data dari database dibanding dengan waktu dari time()

Diasumsikan database yang digunakan adalah “coba”, koneksi database ke localhost dengan username: dpd, dan password: debip.

<?php
mysql_connect("localhost","dpd","debip");
mysql_select_db("coba");
$sekarang = mysql_fetch_object(mysql_query("select unix_timestamp(now()) sekarang"))->sekarang;
echo "waktu saat ini di database: $sekarang <br>";
sleep(60);
$saatini = time();
echo "waktu saat ini setelah sleep: $saatini<br>";
echo "selisih keduanya:".(($saatini-$sekarang)/60)." menit";
?>

Hasilnya:

waktu saat ini di database: 1319708790
waktu saat ini setelah sleep: 1319708850
selisih keduanya:1 menit

mysqlbinlog

  • Untuk mengecek binlog mysql:
mysql> show binary logs;

atau

mysql> show master status;
  • Untuk mengecek ukuran maksimum binlog
show variables like 'max_binlog_size';

atau

di /etc/mysql/my.cnf
edit pada bagian :
              max_binlog_size         = 100M
  • Untuk mengecek lama penyimpanan binlog
show variables like 'expire_logs_days';


atau

di /etc/mysql/my.cnf
edit pada bagian :
              expire_logs_days        = 0 --> 0 menyatakan tidak akan pernah expire

  • Konfigurasi ulang binlog
mysql>SET GLOBAL expire_logs_days=5; 

atau

mysql>SET GLOBAL max_binlog_size=1073741824;