MySql8.0相较于MySql5.7有了很多改变,引入了许多新特性和改进,以下列举一些MySQl8.0新增的特性
数据字典 (Data Dictionary):
MySQL 8.0 引入了数据字典,用于存储数据库对象的元数据,取代了之前的 .frm
文件。这提高了性能和管理的灵活性。
Window Functions:
支持窗口函数,允许在查询结果集上执行聚合和分析函数,如 ROW_NUMBER()
、RANK()
和 DENSE_RANK()
。
SELECT employee_id, salary,
RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;
Common Table Expressions (CTEs):
- 引入了通用表达式,允许在查询中创建临时结果集,提高可读性和模块化。
WITH high_salaries AS (
SELECT * FROM employees WHERE salary > 50000
)
SELECT * FROM high_salaries WHERE department_id = 10;
JSON 支持的增强:
- 提供了更多的 JSON 函数和操作,包括 JSON 路径表达式和 JSON 聚合函数。
SELECT json_extract('{"name": "John", "age": 30}', '$.name');
Spatial Data Support:
- 增加对空间数据类型和空间索引的支持,使 MySQL 8.0 成为更强大的地理信息系统 (GIS) 数据库。
CREATE TABLE locations (
id INT PRIMARY KEY,
name VARCHAR(255),
geom GEOMETRY
);
InnoDB Cluster:
- 引入了 InnoDB Cluster,简化了 MySQL 高可用性和容错性的配置,提供了自动故障转移和恢复功能。
Document Store:
- MySQL 8.0 提供了文档存储模型,使其更适合 NoSQL 数据库的使用场景。
CREATE TABLE mycollection (data JSON);
INSERT INTO mycollection VALUES ('{"name": "Alice", "age": 25}');
Roles:
- 引入了角色的概念,允许将权限集中管理并分配给用户。
CREATE ROLE 'developer';
GRANT SELECT, INSERT, UPDATE ON database.* TO 'developer';
资源管理和调优:
- 引入了新的系统变量和配置选项,允许更细粒度地调整数据库的资源使用和性能参数。例如,
innodb_dedicated_server
可以使 InnoDB 存储引擎在专用服务器上自动调整配置。
SET GLOBAL innodb_dedicated_server = ON;
Persistent 系统变量:
- 引入了持久性系统变量,使得系统变量的设置能够在数据库重启后保持不变。这有助于更好地管理和维护数据库的配置。
SET PERSIST innodb_buffer_pool_size = 2G;