Oracle telah membuat cabang baru dari DBMS MySQL 9.1.0. MySQL Community Server 9.1.0 build disiapkan untuk semua distribusi utama Linux, FreeBSD, macOS dan Windows. Sebagai bagian dari model rilis baru yang diperkenalkan tahun lalu, MySQL 9.1 diklasifikasikan sebagai cabang “Inovasi”, yang juga akan mencakup rilis besar berikutnya, MySQL 9.2. Cabang inovasi direkomendasikan bagi mereka yang menginginkan akses awal ke fungsi baru, diterbitkan setiap 3 bulan dan hanya didukung hingga publikasi rilis signifikan berikutnya (misalnya, setelah kemunculan cabang 9.1, dukungan untuk cabang 9.0 dihentikan ). Musim panas mendatang mereka berencana membuat rilis LTS yang direkomendasikan untuk implementasi yang memerlukan prediktabilitas dan pelestarian perilaku yang tidak berubah dalam jangka panjang. Mengikuti cabang LTS, cabang Inovasi baru akan dibentuk - MySQL 10.0.
Perubahan besar di MySQL 9.1:
- Dukungan untuk ekspresi "IF NOT EXISTS" telah ditambahkan ke operasi "CREATE VIEW", yang memungkinkan Anda mengatur pembuatan tampilan hanya jika tampilan dengan nama yang ditentukan belum ada dan menghindari kesalahan yang muncul jika tampilan tersebut sudah dibuat.
- Menghentikan memuat pemicu saat melakukan operasi baca-saja. Sebelumnya, pemicu dimuat setiap kali tabel diakses, membuang-buang memori dan membuat beban CPU dalam situasi di mana pemicu tidak digunakan (misalnya, saat menjalankan kueri SELECT). Di MySQL 9.1, pemrosesan dan pemuatan pemicu dibagi menjadi dua tahap: membaca metadata tentang pemicu dan menguraikan + mengeksekusi pemicu. Data yang diperoleh pada tahap pertama disimpan satu kali dan kemudian dibagikan ke berbagai contoh pemicu. Pemicunya diurai dan dieksekusi hanya untuk ekspresi yang mengubah data. Selain itu, untuk mengurangi konsumsi memori, alih-alih mengalokasikan buffer secara statis untuk penanganan kesalahan di pemicu, kami beralih ke alokasi memori dinamis sesuai kebutuhan.
- Output dari operasi EXPLAIN telah diperluas untuk menampilkan informasi tentang penggunaan pembacaan multi-rentang dan penggunaan strategi semijoin, di mana operasi JOIN memproses baris hanya dari satu tabel.
- Eksekusi atom dari operasi "CREATE DATABASE" dan "DROP DATABASE" disediakan untuk melindungi dari kegagalan jika terjadi crash atau kesalahan pada tingkat sistem file selama pelaksanaan operasi ini. Misalnya, sebelumnya, ketika “CREATE DATABASE” mogok, struktur penyimpanan database yang tidak berfungsi dan tidak lengkap dapat dibuat, sehingga memerlukan intervensi manual untuk membersihkannya.
- Prosedur tersimpan yang ditulis dalam JavaScript memberikan dukungan untuk tipe VECTOR. Data dengan tipe yang ditentukan sekarang dapat diteruskan dalam parameter input dan return.
- Menambahkan kemampuan untuk mengautentikasi saat menyambung ke DBMS menggunakan protokol OpenID Connect.
- Dua puluh tujuh kerentanan telah diperbaiki, yang paling parah (CVE-2024-5535) telah diberi tingkat keparahan kritis (9.1 dari 10). Kerentanan ini dapat dieksploitasi dari jarak jauh tanpa otentikasi. Masalah ini disebabkan oleh pembacaan di luar batas (out-of-bounds read) di pustaka OpenSSL dan menyebabkan crash atau kebocoran memori dalam respons setelah terhubung ke server dengan indikasi parameter protokol yang salah.
Sumber: opennet.ru
