Кампанія Oracle сфармавала новую галінку СКБД MySQL 9.1.0. Зборкі MySQL Community Server 9.1.0 падрыхтаваны для ўсіх асноўных дыстрыбутываў Linux, FreeBSD, macOS і Windows. У рамках укаранёнай летась новай мадэлі фармавання рэлізаў, MySQL 9.1 аднесены да галін «Innovation», да якіх таксама будзе аднесены наступны значны рэліз MySQL 9.2. Innovation-галінкі рэкамендаваны для тых, хто хоча раней атрымліваць доступ да новай функцыянальнасці, публікуюцца кожныя 3 месяцы і падтрымліваюцца толькі да публікацыі наступнага значнага рэлізу (напрыклад, пасля з'яўлення галінкі 9.1 спынена падтрымка галінкі 9.0). Улетку наступнага года плануюць сфармаваць LTS-рэліз, рэкамендаваны для ўкараненняў, якім неабходна прадказальнасць і працяглае захаванне нязменных паводзін. Следам за LTS-галінкай будзе сфарміравана новая Innovation-галінка – MySQL 10.0.
Асноўныя змены ў MySQL 9.1:
- У аперацыю "CREATE VIEW" дададзена падтрымка выраза "IF NOT EXISTS", які дазваляе арганізаваць стварэнне прадстаўлення толькі калі прадстаўлення з названым імем яшчэ не існуе і пазбегнуць вяртання памылкі, калі прадстаўленне ўжо створана.
- Спынена загрузка трыгераў пры выкананні аперацый, злучаных толькі з чытаннем. Раней трыгеры загружаліся пры любым доступе да табліцы, што прыводзіла да расходавання памяці і стварэнню нагрузкі на CPU у сітуацыях, калі трыгеры не выкарыстоўваліся (напрыклад, пры выкананні запытаў SELECT). У MySQL 9.1 апрацоўка і загрузка трыгераў падзелена на дзве стадыі: чытанне метададзеных аб трыгеры і разбор+выкананне трагера. Дадзеныя, атрыманыя на першай стадыі захоўваюцца адзін раз і затым сумесна выкарыстоўваюцца ў розных экземплярах трыгера. Разбор і выкананне трыгера вырабляецца толькі для выразаў, якія прыводзяць да змены дадзеных. Акрамя таго, для скарачэння спажывання памяці замест статычнага вылучэння буфераў для апрацоўкі памылак у трыгерах ажыццёўлены пераход да дынамічнага вылучэння памяці па неабходнасці.
- Пашырана выснова аперацыі «EXPLAIN», у якім зараз адлюстроўваюцца звесткі аб выкарыстанні шматдыяпазоннага чытання (multi-range) і ўжыванні стратэгіі паўаб'яднання (semijoin), пры якой пры аперацыях JOIN апрацоўваюцца радкі толькі з адной табліцы.
- Забяспечана атамарнае выкананне аперацый "CREATE DATABASE" і "DROP DATABASE" для абароны ад збояў у выпадку аварыйнага завяршэння ці ўзнікненні памылак на ўзроўні файлавай сістэмы падчас выканання дадзеных аперацый. Напрыклад, раней пры аварыйным завяршэнні "CREATE DATABASE" магла быць сфарміравана няпоўная непрацоўная структура сховішчы БД, для ачысткі якой патрабавалася ручное ўмяшанне.
- У напісаных на JavaScript захоўваемых працэдурах забяспечана падтрымка тыпу VECTOR. Дадзеныя з паказаным тыпам зараз могуць перадавацца ва ўваходных і якія вяртаюцца параметрах.
- Дададзена магчымасць аўтэнтыфікацыі пры падключэнні да СКБД з выкарыстаннем пратакола OpenID Connect.
- Ліквідавана 27 уразлівасцяў, самай сур'ёзнай з якіх (CVE-2024-5535) прысвоены крытычны ўзровень небяспекі (9.1 з 10). Уразлівасць можа быць эксплуатаваная выдалена без праходжання аўтэнтыфікацыі. Праблема выклікана чытаннем дадзеных з вобласці па-за вылучаным буферам у бібліятэцы OpenSSL і прыводзіць да аварыйнага завяршэння або ўцечкі змесціва памяці ў адказе пасля злучэння з серверам з указаннем некарэктных параметраў пратакола.
Крыніца: opennet.ru
