Mysql iot表
2016-06-13 15:08
281 查看
我们知道一般的表都以堆(heap)的形式来组织的,这是无序的组织方式。 Oracle还提供了一种有序的表,它就是索引组织表,简称IOT表。IOT表上必须要有主键,而IOT表本身不对应segment,表里所有的数据都存放在主键所在的索引的叶子节点里。 换句话说,在索引叶子节点里的索引条目里不仅存放了被索引的列的值,还同时存放了其他列的值。 对于总是通过主键访问数据的表来说,比较适合使用IOT表。如果使用普通表,则通过主键索引访问表时,至少要读取两个数据块:一个索引块,另一个是表的数据块。 而如果通过IOT表,由于表的数据就存放在索引块中,所以只需要读取一个块即可。IOT表时虚拟表,但是他具有普通表所有的特性。 而且尽管IOT表的数据实际存放在索引segment里,但是我们还是可以在IOT表的基础上,在其他列上再次创建索引,这种索引我们叫二级索引。 使用二级索引查找数据时,存在以下两个阶段: 1,物理猜测:根据二级索引里记录的物理ROWID,去扫描其指向的IOT表所依附的索引segment里的索引节点。 2,逻辑猜测:由于IOT表的数据存放在索引的叶子节点里,而由于在索引里数据都是有序存放的,数据会子会在叶子节点中间插入,因此就存在向叶子节点的拆分问题。一旦叶子节点被拆分,数据所在的索引块就会变化,那么二级索引所指向的位置也就错误了。通过物理ROWID去访问IOT表就找不到数据。这个时候,Oracle会进行逻辑猜测,这时就不使用ROWID了,而是使用主键列的值去扫描IOT表。 创建IOT表的例子如下: create table iot_test(id number,c1 varchar2(40),c2 varchar2(40),c3 varchar2(40),c4 varchar2(40),primary key(id)) organization index SQL> select object_name,object_type from user_objects; OBJECT_NAME OBJECT_TYPE -------------------- ------------------- SYS_IOT_TOP_96480 INDEX IOT_TEST TABLE 我们定义的IOT表时,必须创建一个主键约束,然后指定organization index选项,可以同时指定主键对应的索引所在的表空间名称。 从上面的例子中,假设经常访问的列id和c1这两个列,则如果把其他的c2,c3,c4列也放在索引块里,会比较浪费空间。因为这三列并不经常被访问,没有必要把他们与id,c1放在一起。于是我么就可以通过设置pctthreshold和including这两个属性,从而只在索引块里存放id和c1,而且他的三列在放入overflow里,(overflow是一种segment). pctthreshold说明留在索引块里的数据空间占总数据块大小的百分比,从0到50%。假设在IOT_TEST表中,id列和c1列总共大概需要400个字节,索引块大小为8kB,我们希望ID列和C1列留在索引块里。则留在索引块里的数据占整个索引块大小的5%(500/8192),于是可以将pctthreshold设置为5.我们还可以使用including,对于上面的例子来说,including c2表示从C2列开始,后面所有的列(也就是C2,C3,C4这三列)都放到overflow里。优先考虑pctthreshold,也就是说如果id列的值占数据块大小的百分比已经超过了指定的pctthreshold,则尽管指定的是从C2列开始后面的所有列都放入OVERFLOW,但是由于违反了pctthreshold,则C1以后的列也都全部放入overflow里(即c1,c2,c3,c4都放入overflow里) Mysql IOT表: IOT表 (sn,a1,a2,a3) SN上有主键 这个主键存放了sn,a1,a2,a3的数据 那么我在a1上在创建索引test_idx1 那么test_idx1包含哪些数据 a1,sn这样排列的应该 通过sn来回表
相关文章推荐
- Mysql iot表
- Mysql iot表
- 【51CTO学院三周年】朱老师物联网大讲堂-“需求分析版”-感谢朱有鹏老大带我装C,带我飞
- 云灌溉系统介绍
- Qualcomm物联网之智能家居
- Mysql InnoDB 是IOT表 锁基于索引
- Mysql InnoDB 是IOT表 锁基于索引
- Mysql InnoDB 是IOT表 锁基于索引
- Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境
- Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境
- 通过迈思德物联网网关将三菱Q00UJ系列PLC数据上传到云服务器
- Zephyr 教程:应用程序基础
- Zephyr 教程:内核原语之系统基础
- Zephyr 教程:Zephyr 内核原语
- Zephyr 教程:入门指南
- Zephyr 教程:Zephyr 工程的介绍
- Zephyr 文档教程:目录
- 物联网实验日志-2016-6-8
- 物联网学生的困惑
- NXP 发布了一块世界上最小的64位物联网 ARM 处理器