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

Lokasi Tabel Temp MySQL

MySQL menggunakan trik yang telah menjadi bagian dari sistem POSIX selamanya. Ini membuka file temp, dan segera memutuskan tautannya. Oleh karena itu tidak dapat dilihat di daftar direktori mana pun. Tetapi sistem POSIX seperti UNIX dan Linux seharusnya tidak benar-benar menghapus file yang tidak tertaut saat suatu proses memiliki file terbuka yang menanganinya. Jadi setelah kueri menggunakan tabel temp selesai, itu akan menutup pegangan file, dan kemudian OS akan secara otomatis menghapus file dan mengosongkan penyimpanan yang digunakannya.

Ini biasanya lebih baik daripada meminta kode server ingat untuk menghapus file temp setelah selesai. Ini juga menyumbang seperti penghentian utas, atau crash mysqld. Setidaknya itu tidak akan meninggalkan file temp basi mengotori sistem file Anda.

Anda dapat melihat ukuran file yang tidak ditautkan dengan lsof -s . Saya serahkan kepada Anda untuk mencari contoh cara menggunakan perintah itu (Google adalah teman Anda di sini).

Sangat kecil kemungkinannya bahwa file temp menghabiskan 167 GB ruang kosong Anda.

Atau bisa jadi file temp hanya menggunakan 8GB, tetapi Anda mungkin memiliki 20 utas yang melakukan kueri yang sama secara bersamaan. Saya pernah melihat itu terjadi sekali.

Tetapi kemungkinan besar Anda memiliki nilai tmp_table_size yang membatasi ukuran tabel temp.

Jika Anda mencapai batas, Anda dapat meningkatkan opsi konfigurasi itu, baik sebagai variabel sesi saat Anda membutuhkannya, atau secara global di my.cnf .

Tapi pertama-tama saya akan mencoba mengoptimalkan kueri. Mengapa perlu membuat tabel temp yang begitu besar? Bisakah itu dioptimalkan untuk memeriksa lebih sedikit baris, atau mungkin menghindari membuat tabel sementara sama sekali?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO::commit() berhasil atau gagal

  2. Bagaimana cara memilih dua kolom sebagai satu?

  3. MySQL SELECT WHERE IN LIST dan NOT IN LIST dalam SQL yang sama

  4. membuat slug judul halaman unik php

  5. Permintaan MySql untuk mengambil nilai atribut elemen xml