1、分区表
1)分区表是一个独立的逻辑表,底层是由多个物理字表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装,对分区表的请求都会通过句柄对象转化为对存储引擎的接口调用,所以分区对于SQL层来说是一个完全封装底层实现的黑盒子,对应用是透明的。
2)Mysql实现分区后,索引是按照分区的字表来定义的,没有全局的索引。
3)注意几点:
- 一个表最多只能由1024个分区;
- Mysql5.1中分区的表达式必须是整数或者返回值为整数,在Mysql5.5中可以直接使用列来尽心个分区;
- 如果分区字段中由主键或者唯一索引的列,那么所有主键和唯一索引列都必须包含进来。
- 分区表中无法使用外键约束。
4)第一个分区是特殊分区,在分区的表达 PARTITION BY RANGE (to_days(var)) 中var的值为null或者非法值时,记录都会存放在第一个分区,为了避免第一个分区太大导致检索效果很差,一般第一个分区可以设置PARTITION BY RANGE (to_days(0)),如果var的值都是有效的,第一个分区就是空,即使无效第一个分区的数据量也会很小。
2、视图
Mysql 5.0版本后才开始引入视图。视图本身是一个虚拟表不存放任何数据。在使用SQL语句访问视图的时候返回的是Mysql从其他表中生成的,视图和表是在一个命名空间,不同对视图创建触发器也不能使用DROP TABLE命令删除视图。
创建一个视图:

视图有两种实现:合并算法和临时表算法,如果可能会尽可能使用合并算法,只有在视图中包含GROUP BY、DISTINCT、聚合函数、UNION、子查询等,无法在原纪录和视图建立一一映射的场景中,Mysql都会使用临时表来实现视图,也可以使用EXPLAIN对视图确定是用哪种实现方法。
这里的select_type为“DERVIED”表明该视图采用的是临时表算法实现的。对于使用了临时表算法的视图无法更新数据的。
下图是两种表的实现算法:
3、Mysql内部存储代码
Mysql允许通过触发器、存储过程和函数的形式来存储代码。从Mysql5.1开始可以在定时任务中存放代码,这个定时任务也称为“事件”。
存储过程:
- 每个连接都有独立的存储过程的执行计划缓存
- 存储程序越小越简单越好,更复杂的逻辑还需要交给上层的应用实现。
- 使用存储过程对于一些小的查询或者插入操作优势很明显,相对于应用层面减少执行成本、解析和网络开销,所以一般对于测试环境造大量数据可以考虑存储过程来实现。
 4、主从数据复制
1)mysql支持两种复制方法:基于行的复制和基于语句的复制。这两种复制方式都是通过在主库上记录二进制日志,在备库重放日志的方式来实现数据异步同步。
2)数据复制的步骤:

- 主库上把数据更改记录到二进制日志(Binary Log)中。在每次准备提交事务完成数据更新之前,主库将数据更新的事件记录到二进制日志中。Mysql是按照事务的提交顺序而非每条语句的执行顺序来记录日志,只有记录完毕日志后才会提交事务。
- 备库将主库上的日志复制到自己的中继日志(Relay Log)中。备库会启动一个I/O线程跟主库建立连接,然后在主库上启动一个特殊的二进制转储(binlog dump)线程。这个二进制转储线程会读取主库上二进制日志中的事件。它不会对事件进行轮询,如果该线程追上主库将进入睡眠状态,直到主库发送信号通知有新的事件才会唤醒,备库I/O线程会将接收到的事件记录到中继日志中。
- 备库的SQL线程执行最后一步,该线程从中继日志读取事件并在备库上执行,从而实现备库数据的更新。
如下图所以,在主库中有一个二进制转储线程,从库中有两个线程:I/O线程从主库读取二进制到中继日志和SQL执行线程。

转载于:https://www.cnblogs.com/kma-3/p/9781796.html

mysql的高级特性相关推荐

  1. mysql 事务sqlserver_MYSQL高级特性 -- 事务处理_sqlserver

    下面以两个银行账户之间的转账为例子进行演示. 要使用mysql中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表. CREATE TABLE accou ...

  2. 高性能mysql学习笔记--高级特性

    高性能mysql 七:高级特性 1,分区表 分区表是一个独立的逻辑表,但是底层由多个无力字表组成,实现分区的代码实际上是对一组地层表的句柄对象的封装,对分区表的请求,都会通过句柄对象转化成对储存引擎的 ...

  3. 尚硅谷《MySQL高级特性篇》教程发布

    MySQL底层如何组织设计数据 怎么理解"索引即数据,数据即索引" 海量数据和高并发场景下如何设计主键 索引下推.覆盖索引对优化有什么优势 如何保证主从一致性 MVCC如何解决可重 ...

  4. 【一起学习Mysql】Msql的高级特性

    每日一句:虽然你没有我前女友漂亮 但我一见到你就有种想跟你定下来的感觉 Mysql中除了常用的开发过程中使用到的DML.DCL等常用功能之外,还有一些高级特性,也可以帮助实现高性能的查询以及在某些场景 ...

  5. MySQL高级特性 读书笔记

    MySQL高级特性 1. 分区表 对于用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装 以下场景分区表可以起到非常大的作用: 1. 表 ...

  6. MySQL高级特性之分布式(XA)事务的介绍

    文章目录 分布式(XA) 事务 1.内部XA事务 2.外部XA事务 这一部分是 高性能MySQL(第3版)中第七章第11节内容:关于MySQL高级特性之分布式(XA)事务的介绍,(不感兴趣的可以忽略) ...

  7. Java这个高级特性-泛型,很多人还没用过!

    点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...

  8. Java这个高级特性,很多人还没用过!

    点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...

  9. Redis进阶实践之五Redis的高级特性

    一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性,虽然 ...

最新文章

  1. 追源索骥:透过源码看懂Flink核心框架的执行流程
  2. 设计模式十三:proxy(代理)——对象结构型模式
  3. arm学习笔记五(c/c++与arm汇编混合编程)
  4. C++之RAII机制
  5. Windows 8.1 新增控件之 CommandBar
  6. 又一版A+B [2008年浙江大学计算机及软件工程研究生机试真题]
  7. 傅立叶变换系列(四)离散傅立叶变换
  8. Koa框架教程,Koa框架开发指南,Koa框架中文使用手册,Koa框架中文文档
  9. java 给多人发送、抄送
  10. ADS仿真5_LNA设计
  11. 一文带你理解URI 和 URL 有什么区别?
  12. c语言运算符大全极其意义,C语言运算符大全
  13. 微信小程序测试需要考虑哪些方面?一分钟快速掌握(小白必看!)
  14. wget -O- ...|sh 的含义
  15. openstack 网络更改版
  16. 编辑中的word变成只读_word只读模式怎么取消,word只读模式怎么改
  17. 御坂御坂题解(出自北航校赛) 约瑟夫环问题高效解决方案
  18. blacklist regions:NGS测序数据中的黑名单
  19. 信号与系统(三):系统分析方法对比:微分方程 相量 傅里叶级数/变换 拉普拉斯变换
  20. python基础学习2020.6.23-条件、循环和其他语句

热门文章

  1. 软件工程的实践项目的自我目标
  2. ExtJS4.2:自定义主题 入门
  3. 基于Chrome开源提取的界面开发框架 三
  4. Git 工具 - 子模块 外部引用
  5. Spark学习之路 (二十二)SparkStreaming的官方文档
  6. 【文文殿下】数论一些经典结论
  7. Eclipse 教程
  8. HTML5音乐播放器(四):播放列表与播放方式
  9. linux安装部署apache+subversion+jsvnadmin
  10. javaScript中的几种排序方式