更新时间:2021-01-12 17:44:08 来源:极悦 浏览1128次
MySQL作为目前最流行的关系型数据库管理系统之一,MySQL数据库有着许多的特性,在这些特性之中,有一些光彩夺目的高级特性,为MySQL数据库的强大功能实现贡献了不菲的力量,本文我们就来一起看看这11个MySQL高级特性。
1.分区表
分区表是一种粗粒度的、简易的索引策略,适用于大数据量的过滤场景。最适合的场景是,在没有合适的索引时,对其中几个分区进行全表扫描,或者是只有一个分区和索引是热点,而且这个分区和索引都能够在内存中;限制单表分区数不要超过150个,并且注意某些导致无法做分区过滤的细节,分区表对于单条记录的程序并没有什么优势,需要注意这类查询的性能。
2视图
对好几个表的复杂查询,使用视图有时候会大大简化问题。当视图使用临时表时,无法将WHERE条件下推到各个具体的表,也不能使用任何索引,需要特别注意这类查询的性能。如果为了遍历,使用视图是很合适的。
3.外键约束
外键限制会将约束放到MySQL中,这对于必须维护外键的场景,性能会更高。不过这也会带来额外的复杂性和额外的索引消耗,还会增加多表之间的交互,会导致系统中有更多的锁和竞争。外键可以被看作是一个确保系统完整性的额哇的特性,但是如果设计的是一个高性能的系统,那么外键就会显得很臃肿了。很多人在更在意系统的性能的时候都不会使用外键,而是通过应用程序来维护。
4.MySQL内部存储代码
常用的方式有
1)存储过程和函数
2)触发器
可以在执行INSERT、UPDATE或者DELETE的时候,执行一些特定的操作。可以在MySQL中指定是在SQL语句执行前触发还是在执行后触发。
3)事件
类似于LINUX的定时任务,不过完全是在MySQL内部实现。
4)在存储过程中保留注释
5.绑定变量
绑定变量的SQL语句:INSERT INTO tbl(col1, col2, col3) VALUES (?, ?, ?);。绑定变量的SQL,使用问号标记可以接收参数的位置,当真正需要执行具体查询的时候,则使用具体值代替这些问号。
6.插件
插件类型:
1)存储过程插件
2)后台插件
3)INFORMATION_SCHEMA插件
4)全文解析插件
5)审计插件
6)认证插件
7.字符集和校对
字符集是一种字节到字符之间的映射,而校对规则是指一个字符集的排序方法。很多人都使用Latin1(默认字符集,对英语和某些欧洲语言有效)或者UTF-8。如果使用的是UTF-8,那么在使用临时表和缓冲区的时候需要注意:MySQL会按照每个字符三个字节的最大占用空间来分配存储空间,这可能消耗更多的内存或者磁盘空间。注意让字符集和MySQL字符集配置相符,否则可能会由于字符集转换让某些索引无法正常工作。
8.全文索引
全文索引有着自己独特的语法,没有索引也可以工作,如果有索引效率会更高。
全文索引可以支持各种字符内容的搜索,也支持自然语言搜索和布尔搜索。
9.分布式(XA)事务
很少会有人用MySQL的XA事务特性。除非你真正明白参数innodb_support_xa的意义,否则不要修改这个参数的值,并不是只有显示使用XA事务时才需要设置这个参数。InnoDB和二进制日志也是需要使用XA事务来做协调的,从而确保在系统崩溃的时候,数据能够一致地恢复。
10.查询缓存:
完全相同的查询在重复执行的时候,查询缓存可以立即放回结果,而无须在数据库中重新执行一次。根据经验,在高并发压力环境中查询缓存会导致系统性能的下降,甚至僵死。如果一定要使用查询缓存,那么不要设置太大内存,而且只有在明确收益的时候才使用。查询缓存是一个非常方便的缓存,对应用程序完全透明,无须任何额外的编码,但是如果希望有更高效的查询缓存,建议使用memacched等其他缓存方案。
11.游标
MySQL在服务器中提供只读的、单向的游标,而且只能在存储过程或者更底层的客户端API中使用。因为游标中指向的对象都是存储在临时表中而不是实际查询到的数据,所以MySQL游标总是可读的。
以上就是关于11个mysql高级特性的介绍,这11个MySQL高级特性一起为MySQL数据库的各个功能的实现奠定了基础。想要深入了解这11个MySQL数据库高级特性的小伙伴,观看本站的MySQL教程,对每个MySQL高级特性都有深入的分析和讲解。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习