Oleh karena itu, saya memutuskan untuk mengumpulkannya dalam semacam ringkasan yang dapat membantu memecahkan masalah penggunaannya. Karena perubahan besar antara rilis utama MySQL, saya membagi artikel berdasarkan mereka Show
MySQL5. 6(Jika Anda masih menggunakan versi tersebut, Anda disarankan untuk mempertimbangkan untuk memutakhirkannya segera setelah mencapai EOL. ) Tabel Sementara Buatan PenggunaKetika sebuah tabel dibuat menggunakan klausa CREATE TEMPORARY TABLE, itu akan menggunakan mesin yang ditentukan oleh (default ke InnoDB) jika tidak secara eksplisit ditentukan sebaliknya dan akan disimpan di dalam direktori yang ditentukan oleh variabel Contoh yang mungkin terlihat seperti ini MySQL1 2 3 4 5 6 7 8 9 10 11 mysql > buat tabel sementara tabel tmp1 (id int, a varchar(10)); Kueri Oke, 0 baris terpengaruh (0.02 dtk)
mysql > tampilkan buat tabel tmp1\G *************************** 1. baris *************************** Tabel . tmp1 Buat Tabel . BUAT SEMENTARA TABEL `tmp1` ( `id` int (11) DEFAULT NULL, `a` varchar (10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 baris dalam set (0. 00 dtk) Tapi bagaimana Anda menemukan file yang dibuat di disk yang menyimpan data tabel ini? MySQL1 2 3 4 5 6 7 mysql > pilih table_id, spasi,name,path from information_schema.INNODB_SYS_DATAFILES gabung information_schema. INNODB_SYS_TABLES menggunakan ( spasi ) where name like '%tmp%'\G *************************** 1. baris *************************** table_id. 21 spasi . 7 nama. tmp/ #sql11765a_2_1 jalan. /data / kotak pasir / . ibd /tmp/#sql11765a_2_1.ibd 1 baris dalam set (0. 00 dtk) Kami tidak melihat nama tabel asli di sini. Bahkan dengan melihat buffer pool, kami masih belum mengetahui nama aslinya MySQL1 2 3 4 5 6 7 mysql > pilih TABLE_NAME dari information_schema.INNODB_BUFFER_PAGE di mana table_name seperti '%tmp%'; +---------------------------------------+ . TABLE_NAME . +---------------------------------------+ . `tmp`. ` #sql11765a_2_1`. +---------------------------------------+ 1 baris dalam set (0. 07 dtk) Inilah ekstensi yang tersedia di Percona Server untuk MySQL 5. 6 varian – tabel information_schema tambahan. . Dengan itu, kami dapat membuat kueri yang memberikan lebih banyak informasi MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 mysql > pilih SPACE ,TABLE_SCHEMA,TABLE_NAME, . NAME,PATH ENGINE,g.NAME,PATH dari skema_informasi. GLOBAL_TEMPORARY_TABLES g GABUNG KIRI skema_informasi. INNODB_SYS_TABLES s AKTIF s. NAMA SEPERTI CONCAT ( '%', g.name, '%' ) LEFT JOIN information_schema. INNODB_SYS_DATAFILES MENGGUNAKAN ( SPACE )\G *************************** 1. baris *************************** SPASI . 16 TABLE_SCHEMA. tes TABLE_NAME. tmp1 MESIN . InnoDB NAMA. #sql12c75d_2_0 PATH. /data / kotak pasir / . ibd /tmp/#sql12c75d_2_0.ibd *************************** 2. baris *************************** SPASI . NULL TABLE_SCHEMA. tes TABLE_NAME. tmp3 MESIN . MEMORY NAMA. #sql12c75d_2_2 PATH. NULL *************************** 3. baris *************************** SPASI . NULL TABLE_SCHEMA. tes TABLE_NAME. tmp2 MESIN . MyISAM NAMA. #sql12c75d_2_1 PATH. NULL 3 baris dalam set (0. 00 dtk) Jadi setidaknya untuk tabel temp InnoDB, kita dapat mengkorelasikan nama tabel yang tepat dengan jalur file Tabel Sementara InternalIni adalah yang dibuat oleh MySQL dalam proses mengeksekusi kueri. Kami tidak memiliki akses apa pun ke tabel tersebut, tetapi mari kita lihat bagaimana kami dapat menyelidiki penggunaannya Jenis ini dibuat di memori (menggunakan ) selama ukurannya tidak melebihi variabel tmp_table_size atau max_heap_table_size, dan jika tidak ada kolom TEXT/BLOB yang digunakan. Jika tabel seperti itu harus disimpan di disk, di MySQL 5. 6 itu akan menggunakan penyimpanan MyISAM dan juga tmpdir digunakan sebagai lokasi. Contoh cepat, pada tabel sysbench baris 10M, kueri menghasilkan tabel sementara internal yang besar MySQL1 mysql > PILIH pad, COUNT(*) FROM sbtest1 GROUP BY pad; Dan kita bisa melihat file terkait terus bertambah MySQL1 2 3 4 $ ls -lh /data /sandboxes/msb_5_6_51/tmp/ total 808 jt -rw - rw-- -- 1 przemek przemek 329M Sep 29 23. 24 '#sql_11765a_0. MYD' -rw - rw-- -- 1 przemek przemek 479M Sep 29 23. 24 '#sql_11765a_0. MYI' Mungkin sulit untuk mengkorelasikan tabel temp tertentu dan koneksi kliennya. Satu-satunya informasi yang saya temukan adalah MySQL1 2 3 4 5 6 7 8 9 10 11 mysql > pilih FILE_NAME,EVENT_NAME dari performance_schema.file_summary_by_instance di mana nama_file seperti '%tmp%'<<<<<<<<<<<<<<<<<<<<<< \G *************************** 1. baris *************************** FILE_NAME. /data / kotak pasir /msb_5_6_51/tmp/Innodb Merge Temp File EVENT_NAME. tunggu / io /berkas/innodb/innodb_temp_file *************************** 2. baris *************************** FILE_NAME. /data / kotak pasir / . MYI /tmp/#sql_11765a_0.MYI EVENT_NAME. tunggu / io /berkas/myisam/kfile *************************** 3. baris *************************** FILE_NAME. /data / kotak pasir / . MYD /tmp/#sql_11765a_0.MYD EVENT_NAME. tunggu / io /berkas/myisam/dfile 3 baris dalam set (0. 00 dtk) MySQL5. 7Tabel Sementara Buatan PenggunaSeperti sebelumnya, variabel default_tmp_storage_engine menentukan mesin yang digunakan. Tetapi dua perubahan terjadi di sini. Tabel sementara InnoDB sekarang menggunakan tablespace bersama khusus yang umum – ibtmp1, kecuali jika dikompresi. Selain itu, kami memiliki tampilan information_schema tambahan. INNODB_TEMP_TABLE_INFO. Mengingat itu, kita bisa mendapatkan informasi seperti di bawah ini MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 mysql > pilih nama, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, SPACE, PER_TABLE_TABLESPACE, IS_COMPRESSED from INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO gabung INFORMATION_SCHEMA. FILE pada FILE_ID =SPASI\G *************************** 1. baris *************************** nama. #sql12cf58_2_5 FILE_NAME. . /ibtmp1 FILE_TYPE. SEMENTARA TABLESPACE_NAME. innodb_temporary SPASI . 109 PER_TABLE_TABLESPACE. SALAH IS_COMPRESSED. SALAH *************************** 2. baris *************************** nama. #sql12cf58_2_4 FILE_NAME. /data / kotak pasir / . ibd /tmp/#sql12cf58_2_4.ibd FILE_TYPE. SEMENTARA TABLESPACE_NAME. innodb_file_per_table_110 SPASI . 110 PER_TABLE_TABLESPACE. BENAR IS_COMPRESSED. BENAR 2 baris di set (0. 01 dtk) Tetapi sekali lagi untuk berkorelasi dengan nama tabel, Percona Server untuk ekstensi MySQL perlu digunakan MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 mysql > pilih g. TABLE_SCHEMA, g. TABLE_NAME, nama, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, SPACE, PER_TABLE_TABLESPACE, IS_COMPRESSED from INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO gabung INFORMATION_SCHEMA. FILE pada FILE_ID =SPACE . GLOBAL_TEMPORARY_TABLES information_schema.GLOBAL_TEMPORARY_TABLES g menggunakan (nama)\G *************************** 1. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp1 nama. #sql12cf58_2_5 FILE_NAME. . /ibtmp1 FILE_TYPE. SEMENTARA TABLESPACE_NAME. innodb_temporary SPASI . 109 PER_TABLE_TABLESPACE. SALAH IS_COMPRESSED. SALAH *************************** 2. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp3 nama. #sql12cf58_2_4 FILE_NAME. /data / kotak pasir / . ibd /tmp/#sql12cf58_2_4.ibd FILE_TYPE. SEMENTARA TABLESPACE_NAME. innodb_file_per_table_110 SPASI . 110 PER_TABLE_TABLESPACE. BENAR IS_COMPRESSED. BENAR 2 baris di set (0. 01 dtk) Atau, untuk melihat juga MyISAM dan yang terkait. file frm, kita dapat menggunakan MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 mysql > PILIH g. TABLE_SCHEMA, g. TABLE_NAME, NAME, f. FILE_NAME, g. ENGINE , TABLESPACE_NAME, PER_TABLE_TABLESPACE, SPACE FROM information_schema.GLOBAL_TEMPORARY_TABLES g gabung skema_kinerja. file_instances f AKTIF NAMA_FILE SEPERTI . nama,('%', g.name, '%' ) kiri bergabung INFORMATION_SCHEMA. INNODB_TEMP_TABLE_INFO menggunakan (nama) gabung kiri INFORMATION_SCHEMA. FILE fl pada ruang=FILE_ID order by table_name\G *************************** 1. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp1 NAMA. #sql12cf58_2_5 FILE_NAME. /data / kotak pasir / . dari /tmp/#sql12cf58_2_5.frm MESIN . InnoDB TABLESPACE_NAME. innodb_temporary PER_TABLE_TABLESPACE. SALAH SPASI . 109 *************************** 2. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp2 NAMA. #sql12cf58_2_6 FILE_NAME. /data / kotak pasir / . MYD /tmp/#sql12cf58_2_6.MYD MESIN . MyISAM TABLESPACE_NAME. NULL PER_TABLE_TABLESPACE. NULL SPASI . NULL *************************** 3. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp2 NAMA. #sql12cf58_2_6 FILE_NAME. /data / kotak pasir / . MYI /tmp/#sql12cf58_2_6.MYI MESIN . MyISAM TABLESPACE_NAME. NULL PER_TABLE_TABLESPACE. NULL SPASI . NULL *************************** 4. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp2 NAMA. #sql12cf58_2_6 FILE_NAME. /data / kotak pasir / . dari /tmp/#sql12cf58_2_6.frm MESIN . MyISAM TABLESPACE_NAME. NULL PER_TABLE_TABLESPACE. NULL SPASI . NULL *************************** 5. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp3 NAMA. #sql12cf58_2_4 FILE_NAME. /data / kotak pasir / . dari /tmp/#sql12cf58_2_4.frm MESIN . InnoDB TABLESPACE_NAME. innodb_file_per_table_110 PER_TABLE_TABLESPACE. BENAR SPASI . 110 *************************** 6. baris *************************** TABLE_SCHEMA. tes TABLE_NAME. tmp3 NAMA. #sql12cf58_2_4 FILE_NAME. /data / kotak pasir / . ibd /tmp/#sql12cf58_2_4.ibd MESIN . InnoDB TABLESPACE_NAME. innodb_file_per_table_110 PER_TABLE_TABLESPACE. BENAR SPASI . 110 6 baris dalam set (0. 01 dtk) Tabel Sementara InternalUntuk tabel sementara internal di 5. 7, mirip dalam hal memori. Tapi mesin default untuk tabel temp on-disk ditentukan melalui variabel baru. , yang sekarang defaultnya juga ke InnoDB, dan juga tablespace ibtmp1 digunakan untuk menyimpan isinya Wawasan tentang tablespace sementara yang dibagikan ini sangat terbatas. Kami dapat memeriksa ukurannya dan berapa banyak ruang kosong yang tersedia saat ini. Tampilan contoh diambil selama kueri berat sedang berlangsung MySQL1 2 3 4 5 6 7 8 9 10 11 mysql > pilih FILE_NAME, FILE_TYPE, TABLESPACE_NAME, ENGINE, TOTAL_EXTENTS, FREE_EXTENTS, EXTENT_SIZE/1024/1024 as 'extent in MB', MAXIMUM_SIZE from INFORMATION_SCHEMA.FILES di mana nama_file suka '%ibtmp%' < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <\G *************************** 1. baris *************************** FILE_NAME. . /ibtmp1 FILE_TYPE. SEMENTARA TABLESPACE_NAME. innodb_temporary MESIN . InnoDB TOTAL_EXTENTS. 588 FREE_EXTENTS. 1 seluas dalam MB. 1. 00000000 MAXIMUM_SIZE. NULL 1 baris dalam set (0. 00 dtk) Dan setelah kueri selesai, kita dapat melihat sebagian besar ruang kosong (FREE_EXTENTS) MySQL1 2 3 4 5 6 7 8 9 10 11 mysql > pilih FILE_NAME, FILE_TYPE, TABLESPACE_NAME, ENGINE, TOTAL_EXTENTS, FREE_EXTENTS, EXTENT_SIZE/1024/1024 as 'extent in MB', MAXIMUM_SIZE from INFORMATION_SCHEMA.FILES di mana nama_file suka '%ibtmp%' < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <\G *************************** 1. baris *************************** FILE_NAME. . /ibtmp1 FILE_TYPE. SEMENTARA TABLESPACE_NAME. innodb_temporary MESIN . InnoDB TOTAL_EXTENTS. 780 FREE_EXTENTS. 764 seluas dalam MB. 1. 00000000 MAXIMUM_SIZE. NULL 1 baris dalam set (0. 00 dtk) Namun, tablespace tidak akan terpotong kecuali MySQL di-restart Kerang1 2 $ ls - lh msb_5_7_35/data/ibtmp* - rw - r ----- . 1 przemek przemek 780M Sep 30 19:50 msb_5_7_35 / data / ibtmp1 Untuk melihat aktivitas penulisan (yang mungkin ternyata jauh lebih tinggi untuk satu kueri daripada pertumbuhan ukuran total yang dibuat olehnya) MySQL1 2 3 4 5 mysql > pilih FILE_NAME, SUM_NUMBER_OF_BYTES_WRITE /1024/1024/1024 as GB_written from performance_schema.file_summary_by_instance di mana nama_file seperti '%ibtmp%' \G *************************** 1. baris *************************** FILE_NAME. /data / kotak pasir /msb_5_7_35/data/ibtmp1 GB_ditulis. 46. 925933837891 1 baris dalam set (0. 00 dtk) MySQL8. 0Untuk kesederhanaan, mari lewati cara kerja sebelum 8. 0. 16 dan diskusikan hanya cara kerjanya sejak itu, karena perubahan dalam hal itu cukup signifikan
Tabel Sementara Buatan PenggunaSebagai contoh tabel sementara MySQL1 2 3 4 5 6 7 8 9 10 mysql > buat tabel sementara tabel tmp1 (id int, a varchar(10)); Kueri Oke, 0 baris terpengaruh (0.00 dtk)
mysql > pilih * dari information_schema.INNODB_TEMP_TABLE_INFO; +----------+----------------+--------+------------ . TABLE_ID . NAMA | N_COLS . RUANG . +----------+----------------+--------+------------ . 1089 . #sqlbbeb3_a_12. 5. 4243767289. +----------+----------------+--------+------------ 1 baris dalam set (0. 00 dtk) Kami dapat mengkorelasikan file mana yang digunakan dari kumpulan itu dengan melihat nomor ruang MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 mysql > pilih * dari INFORMATION_SCHEMA.INNODB_SESSION_TEMP_TABLESPACES ; +----+------------+----------------------------+-- . ID . RUANG . PATH | UKURAN . NEGARA . TUJUAN . +----+------------+----------------------------+-- . 10 . 4243767290 . . / #innodb_temp/temp_10. ibt. 81920. AKTIF. HAKIKI. . 10 . 4243767289 . . / #innodb_temp/temp_9. ibt. 98304. AKTIF. PENGGUNA. . 0 . 4243767281 . . / #innodb_temp/temp_1. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767282 . . / #innodb_temp/temp_2. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767283 . . / #innodb_temp/temp_3. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767284 . . / #innodb_temp/temp_4. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767285 . . / #innodb_temp/temp_5. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767286 . . / #innodb_temp/temp_6. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767287 . . / #innodb_temp/temp_7. ibt. 81920. TIDAK AKTIF. TIDAK ADA. . 0 . 4243767288 . . / #innodb_temp/temp_8. ibt. 81920. TIDAK AKTIF. TIDAK ADA. +----+------------+----------------------------+-- 10 baris di set (0. 00 dtk) Tapi sekali lagi, tidak ada cara untuk mencari nama tabelnya. Untungnya, Percona Server untuk MySQL masih memiliki tabelnya, jadi dengan tiga tampilan sistem yang tersedia, kita bisa mendapatkan informasi yang lebih baik tentang tabel sementara buatan pengguna menggunakan berbagai mesin, seperti di bawah ini MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 mysql > PILIH SESSION_ID, SPACE, PATH, TABLE_SCHEMA, TABLE_NAME, SIZE, DATA_LENGTH, INDEX_LENGTH, ENGINE, PURPOSE FROM information_schema.GLOBAL_TEMPORARY_TABLES GABUNG KIRI skema_informasi. INNODB_TEMP_TABLE_INFO MENGGUNAKAN (NAME) LEFT JOIN INFORMATION_SCHEMA. INNODB_SESSION_TEMP_TABLESPACES MENGGUNAKAN ( SPACE )\G *************************** 1. baris *************************** SESSION_ID. 10 RUANG . 4243767290 PATH. . / #innodb_temp/temp_10. ibt TABLE_SCHEMA. tes TABLE_NAME. tmp3 UKURAN. 98304 DATA_LENGTH. 16384 INDEX_LENGTH. 0 ENGINE . InnoDB TUJUAN. PENGGUNA *************************** 2. baris *************************** SESSION_ID. 13 RUANG . NULL PATH. NULL TABLE_SCHEMA. tes TABLE_NAME. tmp41 UKURAN. NULL DATA_LENGTH. 24 INDEX_LENGTH. 1024 ENGINE . MyISAM TUJUAN. NULL *************************** 3. baris *************************** SESSION_ID. 13 RUANG . NULL PATH. NULL TABLE_SCHEMA. tes TABLE_NAME. tmp40 UKURAN. NULL DATA_LENGTH. 128256 INDEX_LENGTH. 0 ENGINE . MEMORY TUJUAN. NULL *************************** 4. baris *************************** SESSION_ID. 13 RUANG . 4243767287 PATH. . / #innodb_temp/temp_7. ibt TABLE_SCHEMA. tes TABLE_NAME. tmp33 UKURAN. 98304 DATA_LENGTH. 16384 INDEX_LENGTH. 0 ENGINE . InnoDB TUJUAN. PENGGUNA 4 baris dalam set (0. 01 dtk) Mirip dengan ibtmp1, tablespace ini tidak terpotong selain dari restart MySQL Dari penjelasan di atas, kita dapat melihat bahwa koneksi pengguna 10 memiliki satu tabel sementara InnoDB terbuka, dan koneksi 13 memiliki tiga tabel sementara menggunakan tiga mesin berbeda Tabel Sementara InternalSaat kueri berat sedang berjalan di koneksi 10, kita bisa mendapatkan tampilan berikut MySQL1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 mysql > tampilkan daftar proses \G ... *************************** 2. baris *************************** Id. 10 Pengguna . msandbox Host . localhost db. tes Perintah. Kueri Waktu . 108 Negara. mengonversi HEAP menjadi ondisk Info. PILIH pad, COUNT (*) FROM sbtest1 GROUP BY pad
mysql > pilih * dari performance_schema.memory_summary_global_by_event_name di mana EVENT_NAME suka '%temptable%'\G *************************** 1. baris *************************** . EVENT_NAME: memori/menggoda/ disk_fisik . COUNT_ALLOC: 2 . COUNT_FREE: 0 SUM_NUMBER_OF_BYTES_ALLOC. 1073741824 SUM_NUMBER_OF_BYTES_FREE. 0 . LOW_COUNT_USED: 0 . 2 . HIGH_COUNT_USED: 2 LOW_NUMBER_OF_BYTES_USED. 0 CURRENT_NUMBER_OF_BYTES_USED. 1073741824 HIGH_NUMBER_OF_BYTES_USED. 1073741824 *************************** 2. baris *************************** . EVENT_NAME: memori/menggoda/ physical_ram . COUNT_ALLOC: 12 . COUNT_FREE: 1 SUM_NUMBER_OF_BYTES_ALLOC. 1074790400 SUM_NUMBER_OF_BYTES_FREE. 1048576 . LOW_COUNT_USED: 0 . 11 . HIGH_COUNT_USED: 11 LOW_NUMBER_OF_BYTES_USED. 0 CURRENT_NUMBER_OF_BYTES_USED. 1073741824 HIGH_NUMBER_OF_BYTES_USED. 1073741824 2 baris di set (0. 00 dtk)
mysql > pilih * dari INFORMATION_SCHEMA.INNODB_SESSION_TEMP_TABLESPACES di mana berada = 10\G *************************** 1. baris *************************** ID. 10 SPACE . 4243767290 PATH. . / #innodb_temp/temp_10. ibt UKURAN. 2399141888 NEGARA. AKTIF TUJUAN. INTRINSIK *************************** 2. baris *************************** ID. 10 SPACE . 4243767289 PATH. . / #innodb_temp/temp_9. ibt UKURAN. 98304 NEGARA. AKTIF TUJUAN. PENGGUNA 2 baris di set (0. 00 dtk) Dari atas, kita dapat melihat kueri membuat tabel sementara yang sangat besar, yang pertama melebihi variabel dan terus tumbuh dalam file yang di-mmapped (masih mesin TempTable), tetapi karena juga tercapai, tabel harus dikonversi ke InnoDB on-disk . Kumpulan yang sama dari tabel InnoDB sementara digunakan dalam kasus ini, tetapi kita dapat melihat informasi tujuan, tergantung apakah tabel tersebut eksternal (dibuat pengguna) atau internal File yang di-mmap tidak terlihat di sistem file karena telah dihapus, tetapi dapat ditonton dengan lsof Kerang1 mysqld 862655 przemek 52u REG 253,3 133644288 52764900 /data/sandboxes/msb_ps8_0_23/tmp/mysql_temptable.8YIGV8 (dihapus) Penting untuk diketahui di sini, bahwa selama ruang yang di-mmap belum terlampaui, penghitung tidak bertambah meskipun file dibuat di disk di sini Juga, di Percona Server untuk MySQL, log lambat yang diperluas, ukuran tabel sementara saat mesin TempTable digunakan, tidak diperhitungkan. https. // jira. percona. com/browse/PS-5168 – ini menunjukkan “Tmp_table_sizes. 0” Dalam beberapa kasus penggunaan, ada masalah yang dilaporkan dengan TempTable. Dimungkinkan untuk beralih kembali ke mesin Memori lama melalui variabel jika diperlukan Apakah MySQL mendukung tabel sementara?Tabel sementara telah ditambahkan di MySQL Versi 3. 23 . Jika Anda menggunakan versi MySQL yang lebih lama dari 3. 23, Anda tidak dapat menggunakan tabel sementara, tetapi Anda dapat menggunakan Tabel Tumpukan. Seperti yang dinyatakan sebelumnya, tabel sementara hanya akan bertahan selama sesi masih hidup.
Bagaimana cara menggunakan tabel sementara dalam kueri MySQL?Di MySQL, sintaks membuat tabel sementara sama dengan sintaks membuat pernyataan tabel normal kecuali kata kunci TEMPORARY. Mari kita lihat pernyataan berikut yang membuat tabel sementara. mysql> CREATE TEMPORARY TABLE table_name ( column_1, column_2,. , table_constraints .
Kapan menggunakan tabel sementara di MySQL?Anda dapat menggunakan kembali hasil sementara ini beberapa kali dalam satu sesi dalam MySQL. Tabel Sementara diperlukan ketika mahal atau hampir tidak mungkin untuk meminta data yang memerlukan pernyataan SELECT tunggal untuk bekerja bersama dengan klausa JOIN .
Di mana tabel temp di MySQL?Tabel sementara internal dapat ditahan di memori dan diproses oleh mesin penyimpanan MEMORY, atau disimpan di disk oleh mesin penyimpanan InnoDB atau MyISAM. If an internal temporary table is created as an in-memory table but becomes too large, MySQL automatically converts it to an on-disk table. |