Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa jumlah baris yang diperkirakan sangat berbeda dalam hasil phpmyadmin?

Tidak seperti tabel MyISAM, tabel InnoDB tidak melacak berapa banyak baris yang terdapat dalam tabel.

Karena itu, satu-satunya cara untuk mengetahui jumlah baris yang tepat dalam tabel InnoDB adalah dengan memeriksa setiap baris dalam tabel dan mengumpulkan hitungan. Oleh karena itu, pada tabel InnoDB besar, melakukan SELECT COUNT(*) FROM innodb_table kueri bisa sangat lambat karena melakukan pemindaian tabel penuh untuk mendapatkan jumlah baris.

phpMyAdmin menggunakan kueri seperti SHOW TABLE STATUS untuk mendapatkan perkiraan jumlah baris dalam tabel dari mesin (InnoDB). Karena ini hanya perkiraan, itu bervariasi setiap kali Anda menyebutnya, terkadang variasinya bisa cukup besar, dan terkadang mendekati.

Berikut adalah posting blog informatif tentang COUNT(*) untuk Tabel InnoDB oleh Percona.

Halaman manual MySQL untuk TAMPILKAN STATUS TABEL menyatakan:

Jumlah baris. Beberapa mesin penyimpanan, seperti MyISAM, menyimpan jumlah yang tepat. Untuk mesin penyimpanan lain, seperti InnoDB, nilai ini merupakan perkiraan, dan dapat bervariasi dari nilai sebenarnya sebanyak 40 hingga 50%. Dalam kasus seperti itu, gunakan SELECT COUNT(*) untuk mendapatkan penghitungan yang akurat.

Halaman di Pembatasan InnoDB masuk ke beberapa detail lebih lanjut:

SHOW TABLE STATUS tidak memberikan statistik akurat pada tabel InnoDB, kecuali untuk ukuran fisik yang disediakan oleh tabel. Jumlah baris hanyalah perkiraan kasar yang digunakan dalam pengoptimalan SQL.

InnoDB tidak menyimpan jumlah baris internal dalam tabel karena transaksi bersamaan mungkin "melihat" jumlah baris yang berbeda pada waktu yang sama. Untuk memproses SELECT COUNT(*) FROM t pernyataan, InnoDB scansan indeks tabel, yang membutuhkan beberapa waktu jika indeks dicatat sepenuhnya di buffer pool. Jika tabel Anda tidak sering berubah, menggunakan cache kueri MySQL adalah solusi yang baik. Untuk mendapatkan penghitungan cepat, Anda harus menggunakan tabel penghitung yang Anda buat sendiri dan biarkan aplikasi Anda memperbaruinya sesuai dengan sisipan dan menghapusnya. Jika perkiraan jumlah baris cukup, SHOW TABLE STATUS dapat digunakan. Lihat Bagian 14.3.14.1, “Kinerja InnoDB Kiat Menyetel” .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Data Minggu Ini di MySQL

  2. Cara Menyesuaikan Cadangan MySQL &MariaDB Anda dengan ClusterControl

  3. Apa Itu MySQL:Gambaran Umum

  4. PostgreSQL vs. MySQL

  5. Bagaimana cara mengganti ekspresi reguler di MySQL?