Tìm hiểu MySQL 5.7
MySQL 5.7 ra mắt khoảng tháng 10-2015 đã đánh dấu thành công vượt bậc của MySQL với tốc độ nhanh hơn, bảo mật hơn, nhiều tiện ích hơn so với các version trước đó. MySQL 5.7 được thiết kế dành cho các ứng dụng Web, thương mại điện tử (E-commerce), ứng dụng xử lý giao dịch trực tuyến, với rất ...
MySQL 5.7 ra mắt khoảng tháng 10-2015 đã đánh dấu thành công vượt bậc của MySQL với tốc độ nhanh hơn, bảo mật hơn, nhiều tiện ích hơn so với các version trước đó.
MySQL 5.7 được thiết kế dành cho các ứng dụng Web, thương mại điện tử (E-commerce), ứng dụng xử lý giao dịch trực tuyến, với rất nhiều tính năng mới. Sau đây là 1 vài những tính năng nổi trội.
-
Hiệu suất & Khả năng mở rộng: Cải tiến InnoDB, Các tác vụ được tải và thực hiện online nhanh hơn, khả năng thay đổi kích thước bộ đệm trực tuyến.
-
Hỗ trợ JSON (JavaScript Object Notation) : Với sự hỗ trợ JSON mới được thêm vào trong MySQL 5.7, cho phép lưu trữ, tìm kiếm, cập nhật và dễ dàng tích hợp dữ liệu Document trong các truy vấn SQL.
-
Cải thiện Replication cho hiệu suất cao và triển khai tự phục hồi cụm.
-
Cải thiện MySQL Performance Scheme: với việc bổ sung nhiều khả năng giám sát mới, giảm footprint and overhead, và cải thiện đáng kể cách sử dụng với SYS Schema.
-
Tăng tính năng bảo mật trong mysql
-
Optimizer: điều khiển và quản lý lượng người dùng lớn hơn và hiệu suất truy xuất tốt hơn với việc nâng cấp cấu hình
Và còn rất nhiều chức năng mới được thêm vào trong Mysql 5.7, bạn có thể tham khảo đường link dưới đây:
danh sách các tính năng mới trong MySQL 5.7 thecompletelistoffeatures.com
Sau đây mình sẽ tìm hiểu qua về performance và cách sử dụng Json trong mysql 5.7
I. Hiệu suất hơn MySQL 5.6 đến 3 lần
Benchmarks
MySQL 5.7 Sysbench Benchmark: SQL Point Selects
MySQL Performance: Với version MYSQL 5.7 Chúng ta có thể làm được nhiều hơn 1,600,000 QPS (queries per second) SQL. Cao hơn rất nhiều so với MySQL 5.6 chỉ 600.000 QPS.
MySQL 5.7 Sysbench Benchmark: Connection Requests
MySQL 5.7 Sysbench Benchmark: Online Transaction Processing (OLTP) Read Only
Theo thống kê được công bố trên trang https://www.mysql.com/why-mysql/benchmarks/
Dựa vào biểu đồ ta có thể thấy số lượng user đồng thời thực hiện truy vấn và số lượng truy vấn thực hiện trên 1 giây (queries per second), ta thấy hiệu suất của MySQL 5.7 vượt trội hơn hẳn so với MySQL 5.6 và các phiên bản trước đó.
II. Tìm hiểu JSON trong mysql 5.7, cú pháp, cách sử dụng
Example:
Create Table cùng với JSON Field
CREATE TABLE `book` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL, `tags` json DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
**Adding JSON Data **
INSERT INTO `book` (`title`, `tags`) VALUES ( 'Test mysql 5.7', '["JavaScript", "PHP", "MYSQL", "IOS" ,"android", "JSON"]' ), ( 'Test 2', '["FramgiaVN", "Ruby", "MYSQL", "Google", "MONGODB", "JSON", "Tuan"]' ) ;
Searching JSON Data
JSON_CONTAINS() function
Cú pháp:
JSON_CONTAINS(json_doc, val[, path])
Ex:
SELECT * FROM `book` WHERE JSON_CONTAINS(tags, '["FramgiaVN"]');
Kết quả:
JSON_SEARCH() function
Cú pháp:
JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])
EX:
JSON Paths
EX:
SELECT JSON_EXTRACT( '{"id": 1, "website": "SitePoint"}', '$.website' ); -- returns "SitePoint":
{ "a": 1, "b": 2, "c": [3, 4], "d": { "e": 5, "f": 6 } } //following paths: $.a returns 1 $.c returns [3, 4] $.c[1] returns 4 $.d.e returns 5 $**.e returns [5]
Extracting JSON Paths in Queries
Ta có thể trích xuất các tag đầu tiên từ table book bằng cách sử dụng truy vấn:
Ex:
JSON_ARRAY() function function which creates arrays, e.g.
SELECT JSON_ARRAY(1, 2, 'abc'); -- returns [1, 2, "abc"]:
JSON_OBJECT() function function which creates objects, e.g.
SELECT JSON_OBJECT('a', 1, 'b', 2); -- returns {"a": 1, "b": 2}
JSON_MERGE() function to merge documents, e.g.
SELECT JSON_MERGE('["a", 1]', '{"key": "value"}'); --- returns ["a", 1, {"key": "value"}]:
Nguồn tham khảo:
http://www.mysql.com/why-mysql/white-papers/whats-new-mysql-5-7/
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-search
https://www.sitepoint.com/use-json-data-fields-mysql-databases/