Endi standart kodlash - utf8mb4 (Hooray!), Emodilar qutisidan tashqarida ishlaydi.
Unicode versiyasi 9.0 ga yangilandi
Rollarda .
Rollar meros qilib olinishi mumkin bo'lgan imtiyoz to'plamlari deb nomlanadi.
Ma'muriyatni soddalashtiring va server xavfsizligini yaxshilang.
Ko'p foydali va qiziqarli xususiyatlar!
Nima yangiliklar?
MySQL 8.0 ma'lumotlar bazasini boshqarish tizimi:
Emoji qo'llab-quvvatlash
Aralash dasturlar uchun alohida NoSQL jadvalini yaratish zaruratini bekor qiladigan MySQL Document Store:
MySQL hujjatlar do'koni arxitekturasi
SQL oyna funktsiyalari
WITH bayonotidan foydalanib ko'rsatilgan vaqtinchalik nomlangan natijalar to'plamlaridan foydalanishga imkon beradigan, rekursiv va rekursiv bo'lmagan Umumiy jadvallar ifodalarini (CTE) qo'llab-quvvatlash:
MySQL Workbench-dagi CTE va MySQL 8.0 oyna funktsiyalariga misol qo'llab-quvvatlash NOWAITva SKIP LOCKEDbu so'z paytda qulfi huzurida muomalasini nazorat qilish uchun foydalanish mumkin SELECT ... FOR SHAREva SELECT ... FOR UPDATE, tushayotgan ko'rsatkichlarni qo'llab-quvvatlash;
Oddiy guruhlangan qatorlarda NULL dan NULL- dan foydalangan holda GROUPING()birlashtirishdan keyin olingan qatorlarni ajratib turuvchi funktsiya .GROUP BYROLLUP
Json
JSON formatida ishlash doirasida amalga oshirilgan yangiliklar:
oraliqlarni belgilash uchun kengaytirilgan sintaksis (masalan, SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1 to 3]');natijada qaytib keladi [2, 3, 4]);
Ushbu formatdagi ma'lumotlarni to'g'ridan-to'g'ri SQL orqali boshqarish uchun JSON jadval funktsiyalari;
JSON_ARRAYAGG()JSON massivlarini yaratish va JSON_OBJECTAGG()JSON ob'ektlarini yaratish uchun yig'ish funktsiyalari ;
Ikkinchi hujjat foydasiga dublikatlarni olib tashlash uchun JSON funktsiyalari birlashadi (masalan, JSON_MERGE('{"a":1,"b":2 }','{"a":3,"c":4 }');qaytish) {"a":3,"b":2,"c":4}.
O'zgaruvchan tartiblash tugmachalari yordamida yaxshilangan tartiblash, muammoni asbobning oldingi versiyasidan 18 marta tezroq hal qilish.
Ta'kidlanishicha, MySQL 8.0 MySQL 5.7-ga qaraganda 2 baravar tez ishlaydi.
Yangilangan ma'lumotlar bazasining texnik tafsilotlari haqida batafsil ma'lumotni rasmiy hujjatlarda topish mumkin . MySQL 8.0 -ni Windows, MacOS va mashhur Linux distributivlarida yuklab olish mumkin .
MySQL 8 migratsiyasi: muammolar va echimlar
Shu yilning boshida, o'tkazilgan ozod yangi filiali 8 ma'lumotlar bazasi serveri MySQL. MySQL-ni yangilashning yangi printsiplari tufayli raqamlash o'zgartirildi va aslida 5.8 versiyasi yangi versiya.
Yangi nashrga kiritilgan barcha yangiliklar qatorida, ularning ba'zilari o'zlarining ma'lumotlarini saqlash uchun MySQL-dan foydalanadigan kodning orqaga qarab muvofiqligiga ta'sir ko'rsatdi.
Ertami-kechmi hamma yangi tizimlarni o'rnatishi yoki eski qurilmalardan ma'lumotlarni uzatishi kerakligi sababli, muallif o'z misolidan foydalanib MySQL 5.7-ning oldingi versiyasidan yangi 8-chi versiyaga o'tishga qaror qildi. Ushbu maqola dasturiy ta'minotning ishlashi uchun juda muhim bo'lgan o'zgarishlarni dastlabki natijalari va ularni hal qilish usullari bilan tanishtiradi.
Shunday qilib, siz MySQL-dan foydalanishga qaror qildingiz. Bu erda biz avvalgi o'rnatishni yangilash yoki yangilash jarayonini o'tkazib yubormoqdamiz - umuman olganda ular standart va amalda avval ishlatilgan protseduralardan farq qilmaydi.
Maqolani yozish paytida FreeBSD 11.2 muhitida o'rnatilgan MySQL 8-ning muallifi uning ixtiyoridan
root@zotum:~ # mysql --version
mysql Ver 8.0.12 for FreeBSD11.2 on amd64 (Source distribution)
root@zotum:~ # uname -v
FreeBSD 11.2-RELEASE-p3 #0: Thu Sep 6 07:14:16 UTC 2018 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
Ma'lumotlar bazasi serveri bilan ishlaydigan amaliy dasturiy ta'minot PHP-da yozilgan va eng so'nggi versiyasidan foydalanadi.
root@zotum:~ # php --version
PHP 7.2.10 (cli) (built: Sep 24 2018 00:28:21) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.10, Copyright (c) 1999-2018, by Zend Technologies
1. Yangi autentifikatsiya sxemasi
MySQL 8-ning birinchi qayd etilgan farqi standart autentifikatsiya sxemasining o'zgarishi edi. Odatiy mysql_native_password o'rniga uning o'rniga yangi caching_sha2_password oldingi sxemaga xavfsizroq va ishonchli alternativa deb e'lon qilingan afzal qilingan autentifikatsiya plagini o'rnini egalladi .
Mos kelmaydigan xatolarga olib keladigan yangi turdagi dasturiy ta'minot yordamida autentifikatsiyadan foydalanishga urinish.
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
Biroq, hozirgi vaqtda barcha standart PHP drayverlari, masalan, mashhur PDO , mysql_xdevapi rivojlanish kengaytmasi bundan mustasno, uni qo'llab-quvvatlamaydi. PHP 7.3 versiyasida yangi sxema joriy etilishi kutilmoqda.
Shu munosabat bilan dasturiy ta'minotning joriy versiyalari ishlashini ta'minlash uchun bir qator harakatlar qilish tavsiya etiladi. Birinchisi, autentifikatsiya qilish sxemasini MySQL my.cnf konfiguratsiya faylida [mysqld] bo'limiga mos parametr qo'shib an'anaviy versiyasiga o'zgartirish bo'lishi mumkin .
root@zotum:~ # cat /usr/local/etc/mysql/my.cnf
# $FreeBSD: head/databases/mysql80-server/files/my.cnf.sample.in 469734 2018-05-12 15:35:25Z mmokhi $
...
[mysqld]
...
default_authentication_plugin = mysql_native_password
...
Bundan tashqari, agar siz allaqachon foydalanuvchilarni yangi autentifikatsiya sxemasi bilan qo'shgan bo'lsangiz va ulardan kamida bittasi ildiz bo'lsa , u o'rnatish bosqichida aniq qo'shilgan bo'lsa, u holda siz sxemani an'anaviy versiyaga o'zgartirishingiz kerak.
root@zotum:~ # mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1745
Server version: 8.0.12 Source distribution
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
root@localhost [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.01 sec)
...
2. Zaxiralangan so'zlar
Ba'zi yuziga ega ikkinchi nuqta, ko'rinishi hisoblanadi kaliti va himoyalangan aytganda belgisini himoya holda foydalanilishi mumkin emas ` (teskari tutuq belgisi yoki talaffuz).
Ularning hozirgi ro'yxatini to'g'ridan-to'g'ri MySQL data_schema ma'lumotlar sxemasi bilan ma'lumotlar bazasidan olish mumkin .
...
root@localhost [(none)]> USE information_schema;
Database changed
root@localhost [information_schema]> SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE RESERVED = 1;
...
Agar SQL kodida jadvallar va / yoki maydonlarning nomlarida ushbu ro'yxatdan ajratilmagan so'z bo'lsa, bu xatoga olib keladi.
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups WHERE deleted = 0 AND uid = 2 ORDER BY gname ASC' at line 1
Bunday holda, ajratilgan so'z guruhlari ishlatilgan .
Albatta, 'va' maydonlari va jadvallarning nomlaridan qochish MySQL uchun kodni loyihalash uchun yaxshi ohangdir. Ammo, muammo bir xil SQL kodi boshqa ma'lumotlar bazasi serverlariga, masalan PostgreSQL-ga kirish uchun foydalanilishi kerak bo'lganda yuzaga keladi. `Belgidan foydalanish MySQL va uning vilkalarining nostandart va eksklyuziv xususiyati, shuning uchun bunday universal kodni boshqa serverlarga yozish va moslashtirish ba'zi qiyinchiliklarga olib kelishi mumkin. Ehtimol, bu holda eng yaxshi variant SQL-kodda zaxiralangan so'zlarni ishlatmaslikdir va agar siz ularni ishlatgan bo'lsangiz, ehtimol kelajakdagi versiyalar bilan mosligini ta'minlash uchun ismlarni o'zgartirish haqida o'ylashingiz kerak.
Yana bir variant ikki tirnoq belgilari foydalanishga ruxsat berish bo'lardi " Jadval va maydon nomlarini himoya qilish uchun MySQL SQL hal etish uchun standart bo'lgan. Bu rejimlari Bundan tashqari orqali amalga oshiriladi sql_modes qadriyatlar ANSI_QUOTES . Bu SQL buyruq berish bilan amalga oshirilishi mumkin.
...
SET SQL_MODE=ANSI_QUOTES;
Query OK, 0 rows affected (0.01 sec)
...
va ushbu rejimni doimiy ravishda sozlash uchun my.cnf konfiguratsiya faylidagi rejimlar to'plamiga mos keladigan qatorni qo'shing
root@zotum:~ # cat /usr/local/etc/mysql/my.cnf
# $FreeBSD: head/databases/mysql80-server/files/my.cnf.sample.in 469734 2018-05-12 15:35:25Z mmokhi $
...
[mysqld]
...
sql-mode = "ANSI_QUOTES ..."
...
3. So'rovlar keshini istisno qilish
Oldingi versiyalarda keng qo'llanilgan MySQL 8 o'rnatilgan kesh so'rovlari keshining yo'qligi yana bir ajablanib bo'lishi mumkin . Ushbu funktsiya uzoq vaqtdan beri eskirgan deb sanab kelindi va endi, nihoyat, vaqt keldi.
Asosiy sabablardan biri bu juda sodda ishlash algoritmlari tufayli samaradorligining pastligi, bu esa InnoDB-ni bashorat qilish keshlash mexanizmlarining ishlashini qiyinlashtiradi.
Agar so'rovlarni keshlash zarurligiga amin bo'lsangiz, unda SQL proksi-serverlarini keshlash bilan foydalanishni ko'rib chiqing, masalan ProxySQL, bu ancha samaraliroq va sozlanishi.
4. Yangi X protokoli
Bundan tashqari, hozirda MySQL-da X protokoli drayverlari bilan ma'lumot almashish uchun yangi protokolni qo'llab-quvvatlash X plagin orqali faollashtirilgan . Uning asosiy afzalliklari orasida, xususan, asinxron so'rovlarni qo'llab-quvvatlash va ma'lumotlar bazalari bilan ishlashni optimallashtirishni qayd etish mumkin.
Protokol aloqalari uchun X protokoli standart ravishda butun dunyoga kirish uchun ochiq bo'lgan 33060 TCP portidan foydalanadi. Agar siz uni faqat mahalliy mashinada ishlatmoqchi bo'lsangiz, xavfsizlik nuqtai nazaridan berilgan manzillar to'plamiga kirishni cheklash yaxshi fikr. Masalan, faqat localhost uchun.
root@zotum:~ # cat /usr/local/etc/mysql/my.cnf
# $FreeBSD: head/databases/mysql80-server/files/my.cnf.sample.in 469734 2018-05-12 15:35:25Z mmokhi $
...
[mysqld]
...
mysqlx_bind_address = 127.0.0.1
...
5. Xulosa
Dasturiy ta'minotning yangi versiyalariga o'tish har doim moslikni yo'qotish xavfiga ega. Eski dasturlarni yangi talablarga moslashtirish odatiy, standart jarayon bo'lib, yaqin kelajakda yuzaga kelishi mumkin bo'lgan muammolarni oldini olish uchun alohida e'tibor talab qiladi.
Shu munosabat bilan, ushbu maqola MySQL 8 dasturini keng tatbiq etishga tayyorgarlik ko'rish uchun barcha ishlab chiquvchilar va tizim ma'murlari uchun foydali bo'ladi deb umid qilaman.
Do'stlaringiz bilan baham: |