第七章 MySQL高级特性

MySQL从5.0和5.1版本开始引入很多高级特性,例如分区、触发器等,这对有其他关系数据库使用背景的用户来说可能并不陌生。到底性能如何,还需要用户真正使用过才知道。

7.1 分区表

对于用户来说,分区表示一个独立的逻辑表,但是底层由多个物理子表构成,实现分区表的代码实际上是一对一组底层表的句柄对象的封装。

分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中。

在下面场景中,分区可以起到非常大的作用:

  • 表非常大以至于无法放到内存中,或者只在表的最后部分有热点数据,其他均是历史数据。
  • 分区表的数据更容易维护。(大批量删除可以用清楚整个分区的方式)
  • 分区表可以分布在不同的物理设备上
  • 可以使用分区表来避免某些特殊的瓶颈。
  • 可以备份和恢复度独立分区。

7.1.1 分区表的原理

存储引擎也无需知道整个是一个普通标还是一个分区表,分区表的索引只是在各个底层表上各自加上一个完全相同的索引。

分区表的select、insert、update、delete操作都是分区层先打开并锁住所有底层表。
-w639

7.1.2 分区表的类型

mysql支持多种分区表,最多的是根据范围进行分区,每个分区存储落在某个范围记录。
还有其他分区技术包括:

  • 键值分区,减少innodb的互斥量竞争
  • 使用数据莫函数来分区,然后将数据轮询放入不同的分区

7.1.3 如何使用分区表

-w615

-w616
全量扫描数据,不要任何索引。
索引数据,并分离热点。

7.1.4 什么情况下会出问题

  • NULL使分区失效
  • 分区列和索隐裂不匹配
  • 选择分区的成本可能很高
  • 打开并锁住所有底层表的成本可能很高
  • 维护分区的成本可能很高

7.1.5 查询优化

-w621
-w563

7.1.6 合并表

-w613
这个没有什么共鸣,难以理解。

7.2 视图

视图是mysql中的一个虚拟表,数据还是存储在原来的表上
-w619
-w829
-w628

7.2.1 可更新视图

-w606

7.2.2 视图对性能影响

7.2.3 视图的限制

Mysql还不支持物化视图,也不支持视图中创建索引。

7.3 外键约束

InnoDB是目前MySQL中唯一支持外键的内置存储引擎。

-w607

7.4 在MySQL内部存储代码

-w639
有人倡导使用存储代码,也有人反对,讨论其优点:

  • 服务器内部执行,离数据最近。
  • 代码重用,方便统一业务规则
  • 简化代码的维护和版本更新
  • 帮助提升安全,更细粒度的存储过程
  • 服务器端可以缓存存储过程的执行计划

    其缺点如下:
  • mySQL没有提供好用的开发和调试工具
  • 存储代码效率要低
  • 存储代码的部署带来额外的复杂性
  • 有安全隐患
  • 存储过程给数据库增加额外压力。

7.4.1 存储过程和函数

-w524
一个存储过程示例。

7.4.2 触发器

-w621

7.4.3 事件

-w598

7.4.4 在存储过程中保留住世

-w551

7.5 游标

-w618

7.6 绑定变量

7.6.1 绑定变量的优化

-w490

7.6.2 SQL接口的绑定变量

这个真的没有共鸣…

7.7 用户自定义函数(UDF)

-w607

7.8 插件

-w614
存储过程插件、后台插件、infomation_schema插件、全文解析插件、

7.9 字符集和校对

7.9.1 MySQL如何使用字符集

-w612
-w586
conf文件可以设置 也可以通过修改数据库来设置

7.9.2 选择字符集和校对规则

-w599

7.10 全文索引

-w646

7.10.1 自然语言的全文索引

-w616
tf-idf的思想。

7.10.2 布尔全文索引

-w585

7.10.3 mySQL 5.1中全文索引的变化

7.10.4 全文索引的限制和替代方案

-w605

  • 全文索引更大的操作代价,但是更快的查找速度

7.11 分布式XA事务

-w595

-w595

###7.11.1 内部XA事务

7.11.2 外部XA事务

-w617

7.12 查询缓存

-w616

7.12.1 MySQL如何判断缓存命中

-w586
哈希索引

7.12.2 查询缓存如何使用内存

-w602
-w617

7.12.3 什么情况下查询缓存能发挥作用

-w653
-w592

7.12.5 InnoDB和查询缓存

-w594

7.12.7 通用查询缓存

-w634

7.13 总结

开眼界,但是现在都mysql5.6 了,估计有些高级特性都改变得很严重了。

-w652
外键、存储阔成、绑定变量、插件、字符集、全文索引、XA事务、查询缓存。

-w669

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值