Skip to content

Domain, hosting, code and data — in your name, in writing

jagaweb.

Pangkalan Data

TTFB Perlahan WordPress di Exabytes: Cara Menukar MyISAM ke InnoDB

Bacaan 4 minitOleh Pasukan Teknikal JagaWeb

Selesaikan pertanyaan pangkalan data yang amat perlahan di Exabytes dengan menukar jadual lapuk MyISAM WordPress ke InnoDB serta melaraskan kolam penimbal (buffer pool).

Mengapa Pertanyaan Pangkalan Data Anda Mengalami Kelewatan (Timeout)

Jika papan pemuka pentadbir WordPress anda di Exabytes beroperasi dengan sangat perlahan dan Masa ke Bait Pertama (TTFB) melebihi 2 saat, puncanya sering kali berkaitan dengan penguncian jadual pangkalan data (database locking).

Pemasangan WordPress yang lama (atau pangkalan data yang dicipta oleh pemasang automatik legasi) secara lalai menggunakan enjin storan MyISAM. MyISAM menggunakan penguncian peringkat jadual (table-level locking). Jika seorang pengguna sedang mengemas kini troli WooCommerce mereka (menulis ke dalam jadual), semua pengguna lain yang cuba membaca jadual tersebut terpaksa menunggu dalam barisan gilir.

Piawaian moden ialah InnoDB, yang menggunakan penguncian peringkat baris (row-level locking), membolehkan operasi membaca dan menulis berjalan serentak tanpa gangguan.

1. Menyemak Enjin Storan Anda

Log masuk ke phpMyAdmin melalui cPanel, pilih pangkalan data anda, dan semak lajur "Type". Jika anda melihat MyISAM pada jadual wp_posts atau wp_options, anda perlu segera berhijrah ke InnoDB.

Melalui SSH / Baris Arahan MySQL:

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nama_database_anda';

2. Menukar Jadual ke InnoDB

Sebelum meneruskan, sila ambil salinan sandaran SQL lengkap terlebih dahulu.

Untuk menukar enjin jadual melalui SQL:

ALTER TABLE wp_posts ENGINE=InnoDB;
ALTER TABLE wp_options ENGINE=InnoDB;

Jika anda mempunyai akses SSH, anda boleh menggunakan WP-CLI untuk menjana pertanyaan bagi semua jadual sekali gus:

wp db query "SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nama_database_anda' AND ENGINE = 'MyISAM';" --skip-column-names > convert.sql
mysql nama_database_anda < convert.sql

3. Menyelaraskan Kolam Penimbal InnoDB (Untuk VPS)

Jika anda menggunakan VPS Exabytes, InnoDB memerlukan konfigurasi memori yang tepat untuk mencapai kelajuan maksimum. Edit fail /etc/my.cnf atau /etc/mysql/my.cnf:

# Tetapkan kepada 50-70% daripada jumlah RAM pelayan
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M

Mulakan semula perkhidmatan MySQL: systemctl restart mysql atau systemctl restart mariadb.


Adakah kelembapan pangkalan data merosakkan kadar penukaran jualan anda? Kami telah memindahkan dan mengoptimumkan lapisan pangkalan data untuk Trexon Energy, mengurangkan TTFB daripada 3 saat kepada bawah 200ms.

Hentikan kehilangan pelanggan akibat masa muat turun yang perlahan. Biarkan JagaWeb mengoptimumkan lapisan data anda dengan Semakan Pemilikan & Akses bernilai RM5,000, dan pastikan ia sentiasa berada pada prestasi puncak melalui Pelan Penjagaan RM450/bulan kami.

WhatsApp