Selasa, Desember 24, 2019

IN SELECT plus EXISTS

Environment
  1. MySQL 5.7.27
  2. Centos 6.10
mysql> DELETE FROM CSV_DATA
WHERE FILE_ID IN ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7)
LIMIT 100000

129 sec
Nampak-nya seluruh row akan di-scan dan nilai FILE_ID pada setiap setiap row akan dibandingkan dengan hasil dari IN SELECT .
mysql> DELETE FROM CSV_DATA
WHERE EXISTS ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7 )
  AND FILE_ID IN ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7 )
LIMIT 100000

0 sec
Nilai dari EXIST akan di-evaluate dan bila row tidak ditemukan maka perbandingan selanjutkan tidak di-evaluate.

Dalam case ini, LIMIT digunakan untuk mempersingkat waktu locking terhadap table CSV_DATA. Statement JOIN tidak dapat digunakan karena tidak compatible dengan LIMIT .

Senin, Desember 23, 2019

Windows 7 Port Forwarding

List port forwarding configuration
netsh interface portproxy show v4tov4
Append port forwading
netsh interface portproxy add v4tov4 listenport=80 connectaddress=<realIpAddress> connectport=80
Remove port forwarding
netsh interface portproxy delete v4tov4 listenport=80

Sabtu, Desember 21, 2019

Remove MySQL root password

Environment

  1. Operation System: Ubuntu 18.04.3 LTS
  2. MySQL Server: 5.7.28

Use on your own risk !

$ sudo service mysql stop
$ sudo rm -rf /var/lib/mysql
$ sudo rm -rf /var/run/mysqld
$ sudo mkdir /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld
$ sudo /usr/lib/mysqld_safe --user=mysql --initialize-insecure
$ sudo service mysql start

Minggu, November 10, 2019

Online Resize Logical Volume

Logical Volume dapat di-resize secara online dengan perintah sebagai berikut. Perintah tersebut sukses dilaksanakan pada saat proses read-write terjadi pada logical volume. Hanya disarankan untuk proses resize ke ukuran yang lebih besar.

$ sudo lvextend -L 50G /dev/mapper/vg1-db1

Size of logical volume vg1/db1
changed from 20.00 GiB (5120 extents) to 50.00 GiB (12800 extents).
Logical volume db1 successfully resized.

$ sudo resize2fs /dev/mapper/vg1-db1

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg1-db1 is mounted on /volume/db1;
on-line resizing required
old desc_blocks = 2, new_desc_blocks = 4

Performing an on-line resize of /dev/mapper/vg1-db1 to 13107200 (4k) blocks.
The filesystem on /dev/mapper/vg1-db1 is now 13107200 blocks long.

Selasa, Oktober 01, 2019

Rpmbuild : File not found

Command line lengkap rpmbuild , sebagai berikut:
$ rpmbuild -ba Package.spec
Content dari Package.spec yang error ..
...
%prep
%setup -q
%build
%install
touch $RPM_BUILD_ROOT/opt/package-1.0.0
%files
/opt/package-1.0.0
<EOF>
Pesan error ..
RPM build errors: File not found: /opt/package-1.0.0
Debug dengan strace ..
$ strace rpmbuild -ba Package.spec
Hasil dari strace ..
write(1, "Processing files: package-1.0.0"..., 44) = 44
lstat64(".. package-1.0.0-1.i386/opt/package-1.0.0\r"
  , 0xbf89db80) = -1 ENOENT (No such file or directory)
write(2, "error: ", 7error: )                  = 7
write(2, "File not found: rpmbuild/"..., 93 
  File not found: 
  rpmbuild/BUILDROOT/package-1.0.0-1.i386/opt/package-1.0.0
  ) = 93
Dari output strace di atas terlihat jelas terdapat karakter \r setelah alamat file. Dan berikut content dari Package.spec yang okay, yaitu tanpa line ending setelah alamat file ..
...
%prep
%setup -q
%build
%install
touch $RPM_BUILD_ROOT/opt/package-1.0.0
%files
/opt/package-1.0.0<EOF>