12/08/2018, 16:01

Mysql 8.0 có gì cải tiến hơn so với Mysql phiên bản cũ. ^_^

Xin chào các bạn! Hôm nay, mình xin giới thiệu về một phần không kém quan trọng trong nghề lập trình của chúng đó là Database. Nếu là developer chuyên về website thì chắc hẳn bạn đã làm việc rất nhiều với Mysql. Nhưng sẽ có một vài bạn cũng như mình đó là ít quan tâm đến version của Mysql. Tại sao ...

Xin chào các bạn! Hôm nay, mình xin giới thiệu về một phần không kém quan trọng trong nghề lập trình của chúng đó là Database. Nếu là developer chuyên về website thì chắc hẳn bạn đã làm việc rất nhiều với Mysql. Nhưng sẽ có một vài bạn cũng như mình đó là ít quan tâm đến version của Mysql. Tại sao lại quan tâm đến version của một ngôn ngữ làm gì? Xin trả lời rất ngắn gọn đó là để giúp mình có những solution tốt đối với một vấn đề mà ở phiên bản cũ bạn phải xử lý rất dài và khó.... Vậy vấn đề hôm nay mình xin đề cập đó là Mysql 8.0 có gì mới hơn so với các Mysql phiên bản cũ.

Trong nội dung ngày hôm nay mình xin đề cập về những tính năng được thêm mới, điều chỉnh và xóa khỏi version Mysql 8.0. Mặc dù đã có một vài ứng dụng sử dụng Mysl 8.0, nhưng không có một phiên bản chính thức nào được phát hành.

1 . Data dictionary.

Hiện nay, MysqlServer kết hợp một từ điển dữ liệu giao dịch lưu trữ thông tin về các đối tượng cơ sở dữ liệu. Trong phiên bản MySQL trước, dữ liệu từ điển được lưu trữ trong các tập tin siêu dữ liệu và bảng nontransactional. InnoDB tiếp tục được sử dụng cho dữ liệu từ điển trong phiên bảng Msql 8.0 này.

Vì đây là một tính năng mới trong Mysql Server nên nó sẽ có cơ chế sử dụng khác với những Mysql Server không có data dictionary.

Các bảng data dictionary là không thể truy cập với chúng như những bản bình thường mà chỉ có thể truy cập thông qua debug trong Mysql. Tuy nhiên, Mysql đã hỗ trợ trong việc truy cập đến những dữ liệu được lưu với các bảng data dictionary thông qua bảng INFORMATION_SCHEMA và câu lệnh SHOW.

Mặc định, các bảng data dictionary là ẩn nhưng chúng ta có thể truy cập chúng thông qua debug. Sau khi đã truy cập vào mysql với option là -DWITH_DEBUG=1 và xác định rõ +d,skip_dd_table_access_check ( dùng lệnh này để cấu hình MySQL và hỗ trợ và cho phép bạn sử dụng option --debug="d,parser_debug" khi bạn khởi động server).

Sau khi khởi động debug trong Mysql xong chúng ta sử dụng câu lệnh SET để hiển thị bảng data dictionary trong mysql : mysql> SET SESSION debug='+d,skip_dd_table_access_check';

Sử dụng câu lệnh truy vấn sau để lấy một danh sách các dữ liệu của bảng data dictionary mysql> SELECT name, schema_id, hidden, type FROM mysql.tables where schema_id=1 AND hidden='System';

Sử dụng SHOW_CREATE_TABLE để xem cấu trúc từ bảng data dictionary. mysql> SHOW CREATE TABLE mysql.catalogsG

2. Bảo mật và quản lý tài khoản.

Những cải tiến này đã được thêm vào để cải thiện tính bảo mật và cho phép DBA (Database Administrator ) linh hoạt hơn trong việc quản lý tài khoản:

  • Hiện nay, Mysql hỗ trợ Roles cho phép bạn tạo ra vai trò trong Mysql Server và gán các đặc quyền cụ thể cho những người tham gia truy cập. Những Roles này có thể được giao cho nhiều người dùng với mục đích và vai trò khác nhau. Vì vậy, từ bây giờ bạn không cần phải nhớ các quyền cho các lập trình viên, QA.. trong team nữa. Hơn thế nữa, nó thật dễ dàng để set up:

Để tạo một vai trò mới: CREATE ROLE 'app_developer', 'app_read', 'app_write';

Giao quyền cho một user GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';

  • Duy trì thông tin về lịch sử mật khẩu, cho phép DBAS (Database Administrator Security ) yêu cầu rằng mật khẩu mới không sử dụng lại mật cũ đã được sử dụng và cho một số số thay đổi mật khẩu hoặc được dùng trong khoảng thời gian dài. Có thể thiết lập chính sách tái sử dụng mật khẩu trên tài khoản chung cũng như trên cơ sở mỗi tài khoản. Cùng với khả năng hết hạn mật khẩu hiện tại để yêu cầu thay đổi mật khẩu theo định kỳ, các tính năng lịch sử mật khẩu mới cung cấp cho DBAS (Database Administrator Security ) kiểm soát hoàn toàn và bảo mật hơn trong việc quản lý mật khẩu.

  • Một điểm mới nữa là plugin xác thực caching_sha2_password . Cũng như plugin sha256_password , caching_sha2_password dùng hàm băm SHA-256, nhưng sử dụng bộ nhớ cache để giải quyết các vấn đề về thời gian thực tức để đảm bảo tính đúng đắn của dữ liệu. Nó còn hỗ trợ nhiều giao thức kết nối và không yêu cầu liên kết ngược lại OpenSSL cho khả năng thay đổi mật khẩu theo cơ chế RSA ( đây là một cơ chế mã hóa đối xứng được sử dụng rộng rãi và nếu như các bạn quan tâm thì hãy đọc bài sau để hiểu rõ hơn https://techtalk.vn/ma-hoa-bat-doi-xung-rsa.html).

3. Những cải tiến trong InnoDB

Những cải tiến của InnoDB được thêm mới vào:

  • Giá trị hiện tại được cập nhật tự động đa tối đa là được viết vào các redo log mỗi lần giá trị thay đổi và nó sẽ được lưu vào một bảng hệ thống cơ-tin trên mỗi trạm kiểm soát. Những thay đổi này làm cho giá trị cập tự động tối đa hiện tại tăng lên liên tục trên máy chủ khởi động lại.

  • Plugin InnoDB memcached hỗ trợ nhiều cho hoạt động get và truy vấn sắp xếp. Khả năng tìm nạp nhiều cặp khóa / giá trị trong một truy vấn memcached đơn để cải thiện hiệu suất truy vấn bằng cách giảm lưu thông truyền thông giữa máy khách và máy chủ. cho innoDB, nó có nghĩa là ít hơn giao dịch và cơ chế open-table.

  • Một tùy chọn cấu hình động mới, innodb_deadlock_detect được sử dụng để vô hiệu hóa những tính năng phát hiện những rủi ro. Trong những hệ thống có tương tác cao giữa người dùng và server. Đôi khi, nó có thể hiệu quả hơn để vô hiệu hóa phát hiện những rủi ro và dựa vào các thiết lập cho rollback giao dịch khi một bế tắc xảy ra innodb_lock_wait_timeout.

4. Mặc định bộ ký tự (character) và sắp xếp (collation).

Bắt đầu với Mysql 8.0, mặc định của bộ ký tự là utf8mb4 và bộ sắp xếp là utf8mb4_800_ci_ai. Đây sẽ là một thông tin tuyệt vời và một bước tiến tới hỗ trợ đa ngôn ngữ chuẩn hóa trong các ứng dụng điều khiển dữ liệu.

5. Những cải thiện trong Model Cost

Lần đầu tiên, model cost của mysql sẽ xem xét bộ nhớ và kiểm tra nếu các dữ liệu có liên quan cho truy vấn đã nằm trong bộ nhớ. Kết quả của sự thay đổi này có thể lựa chọn các kế hoạch truy vấn khác nhau. Điều này sẽ xảy ra tự động mà không cần cấu hình thêm.

Trên đây chỉ là một phần nhỏ trong những tính năng thêm vào Mysql 8.0. Nếu có cơ hội mình sẽ trình bày thêm những tính năng mới đó cũng như những tính năng của các phiên bản cũ được loại bỏ trong phiên bản Mysql lần này.

0