Temporary table — ma’lumotlar bazasida cheklangan sessiya yoki transaction davomida ishlatiladigan vaqtinchalik jadval. U oraliq natijalarni saqlash, murakkab hisobni bosqichlarga ajratish yoki bir xil ma’lumot to‘plamini bir nechta so‘rovda qayta ishlatish uchun yaratiladi. Doimiy jadvaldan farqli ravishda uning hayot davri qisqa va ko‘rinish sohasi cheklangan bo‘ladi.
Hayot davri va ko‘rinish
Local temporary table odatda uni yaratgan database sessioniga tegishli. Boshqa connection ayni nomdagi o‘z jadvalini yaratishi mumkin va ular bir-birini ko‘rmaydi. Session yopilganda obyekt avtomatik o‘chadi. Ayrim DBMSlar transaction yakunida satrlarni tozalash yoki jadvalni tushirish rejimini ham beradi.
Global temporary table atamasi vendorlar orasida turlicha ishlatiladi. Ba’zi tizimlarda schema ta’rifi barcha sessionlarga ko‘rinadi, lekin har sessionning satrlari alohida saqlanadi; boshqalarida obyekt undan foydalanayotgan oxirgi session tugaguncha mavjud bo‘ladi. Shu sababli aniq semantika DBMS hujjatiga bog‘liq.
Tuzilishi va indekslar
Temporary table oddiy jadvalga o‘xshab ustun, data type, constraint va indekslarga ega bo‘lishi mumkin:
CREATE TEMPORARY TABLE recent_orders (
order_id BIGINT PRIMARY KEY,
total DECIMAL(18,2)
);
Katta oraliq to‘plam keyingi joinlarda ishlatilsa mos indeks query vaqtini kamaytiradi. Lekin jadvalni yaratish, yozish, statistikani hisoblash va indeks qurishning o‘zi xarajat keltiradi. Bir marta ishlatiladigan kichik natija uchun common table expression yoki derived table soddaroq bo‘lishi mumkin.
Fizik saqlanish
“Temporary” ma’lumot faqat RAMda turadi degani emas. Database memory limitidan oshgan sahifalarni temporary tablespace yoki diskka yozishi mumkin. Sort, hash va materialization ham shu resursdan foydalanadi. Ko‘p parallel session katta vaqtinchalik jadvallar yaratsa temp storage to‘lib, boshqa querylarga ham ta’sir qiladi.
Transaction log talablari doimiy jadvaldan yengilroq bo‘lishi mumkin, chunki crashdan keyin temporary obyektni tiklash kerak emas. Shunga qaramay, rollback va internal consistency uchun ma’lum logging saqlanadi.
Procedure va connection pool
Stored procedure temporary table yaratib, bir necha statement orqali to‘ldirishi va o‘qishi mumkin. Nom collision session darajasida hal qilinadi. Connection pool ishlatilganda application request tugashi session tugaganini anglatmasligi mumkin: connection poolga qaytadi. Jadval avtomatik transaction-scoped bo‘lmasa, keyingi request eski obyekt yoki satrlarni ko‘rishi mumkin. Cleanup aniq bajariladi.
Concurrency va xavfsizlik
Session-local satrlar orasida foydalanuvchilararo lock contention kam bo‘ladi, ammo system catalog, allocation va temp storage umumiy resursdir. Juda ko‘p create/drop metadata contention keltirishi mumkin. Ba’zi platformalar temporary table metadata’sini cache qiladi.
Temporary table maxfiylik chegarasi emas. Database administratori, backup yoki host darajasidagi kuzatuv vositasi temporary storage’ni ko‘rishi mumkin. Sensitive qiymatlar uchun access control, encryption va log sanitization talablari saqlanadi.
Statistikalar va rejalashtirish
Query optimizer vaqtinchalik jadval hajmi va qiymatlar taqsimotiga qarab join tartibini tanlaydi. Ayrim DBMSlar insertdan keyin statistikani avtomatik yaratadi, boshqalari taxminiy row count ishlatadi. Noto‘g‘ri baho nested-loop yoki hash joinning samarasiz tanlanishiga olib kelishi mumkin. Procedure ichida jadval hajmi chaqiruvlar orasida keskin farqlansa plan qayta tuzilishi talab etilishi mumkin.
Jadvalga yozilgan satrlar soni va temp storage sarfi kuzatuv metrikalarida alohida ko‘rsatilishi mumkin.
Bog‘liq tushunchalar
Common table expression, Derived table, Temporary tablespace, Stored procedure, Session, Transaction, Materialization