当前位置: 首页 > news >正文

南宁太阳能网站建设网页设计与制作教程机械工业出版社

南宁太阳能网站建设,网页设计与制作教程机械工业出版社,网站建设合优,网站建设费属于文化事业建设费系列文章 基础篇——MySQL 的基础架构 基础篇——redo log 和 binlog 基础篇——事务隔离 目录 系列文章深入浅出索引#xff08;上#xff09;4.1 索引的常见模型4.2 InnoDB 的索引模型4.3 索引维护4.4 思考#xff1a;为什么要重建索引以及如何做#xff1f; 深入浅出索…系列文章 基础篇——MySQL 的基础架构 基础篇——redo log 和 binlog 基础篇——事务隔离 目录 系列文章深入浅出索引上4.1 索引的常见模型4.2 InnoDB 的索引模型4.3 索引维护4.4 思考为什么要重建索引以及如何做 深入浅出索引上 索引的出现其实就是为了提高数据查询的效率就像书的目录一样。我们从小就用的汉语字典里面的声母查询方式就是聚簇索引 偏旁部首就是二级索引偏旁部首笔画就是联合索引。同样对于数据库的表而言索引其实就是它的“目录”。 4.1 索引的常见模型 哈希表它是一种以键 - 值key-value存储数据的结构。把值放在数组里用一个哈希函数把 key 换算成一个确定的位置然后把 value 放在数组的这个位置。如果多个 key 值经过哈希函数的换算会出现了同一个值处理这种情况的一种方法是拉出一个链表。 哈希表这种结构适用于只有等值查询的场景。因为在哈希表中数据是根据它们的哈希值散列存储的这意味着相邻的键值在物理上可能相隔很远。对于区间查询这种无序性导致无法直接定位到查询区间的起始点和结束点等值查询就是用等号来匹配查询结果分为单条件查询、多条件查询与等值查询对应的是模糊查询、范围查询。 有序数组在等值查询和范围查询场景中的性能就都非常优秀。使用二分法能够快速得到值时间复杂度是O(log(N))。 缺点是更新数据的成本高所以有序数组索引只适用于静态存储引擎比如要保存的是一些不会再修改的历史数据。 搜索树树可以有二叉也可以有多叉。搜索树的特点就是父节点的左子树所有节点的值小于父节点的值右子树所有节点的值大于父节点的值。这种结构使得查找操作的时间复杂度可以保持在O(log(N))。 大多数数据库存储不使用二叉树而是多叉搜索树比如B树。因为索引不止存在内存中还要写到磁盘上。二叉树比 n 叉树的高度更高这就意味着需要更多的磁盘 I/O时间更长。 4.2 InnoDB 的索引模型 InnoDB 使用了 B 树索引模型所以数据都是存储在 B 树中的。每一个索引在 InnoDB 里面对应一棵 B 树。 根据叶子节点的内容索引类型分为主键索引和非主键索引 主键索引的叶子节点存的是整行数据。在 InnoDB 里主键索引也被称为聚簇索引clustered index非主键索引的叶子节点内容是主键的值。在 InnoDB 里非主键索引也被称为二级索引secondary index。 在查询方面假设我们有一个主键列为 ID 的表表中有字段 k并且在 k 上有索引。 如果语句是 select * from T where ID500即主键查询方式则只需要搜索 ID 这棵 B 树如果语句是 select * from T where k5即普通索引查询方式则需要先搜索 k 索引树得到 ID 的值为 500再到 ID 索引树搜索一次。这个过程称为回表。 所以使用非主键索引查询可能会触发回表因为非主键索引的B树中只存储着数据的主键索引上面例子里的ID我们需要用ID在到主键索引的B树中查询一遍找到完整的数据。 4.3 索引维护 B 树为了维护索引有序性在插入新值的时候需要做必要的维护。 因此推荐使用自增主键NOT NULL PRIMARY KEY AUTO_INCREMENT 从性能角度自增主键的插入数据模式正符合了递增插入的场景。这种情况下每次插入一条新记录都是追加操作都不涉及到挪动其他记录也不会触发叶子节点的分裂。而有业务逻辑的字段做主键则往往不容易保证有序插入这样写数据成本相对较高。 从存储空间角度主键长度越小普通索引的叶子节点就越小普通索引占用的空间也就越小。 当然也有些场景适合用业务字段直接做主键 只有一个索引该索引必须是唯一索引。 这就是典型的KV 场景这种场景下的数据被存储为键和值之间的映射适用于只需要通过一个唯一键来访问特定值的场合。 因为没有其他索引所以不用考虑非聚簇索引二级索引空间占用大小问题并且也不用考虑回表的问题 4.4 思考为什么要重建索引以及如何做 当我我们删除了表中的一些行时这些行只是被标记为“已删除”而不是真的从索引中物理删除了因而空间也没有真的被释放回收。 InnoDB的Purge线程会异步的来清理这些没用的索引键和行但是依然没有把这些释放出来的空间还给操作系统重新使用因而会导致页面中存在很多空洞。 重建索引是将原始索引在磁盘和内存中都删除再根据原始数据建立索引可以将原始索引中由于页分裂等原因造成的数据页的利用率低的问题解决 提高页利用率。 如果要重建一个普通索引k 可以用下面两个 SQL 语句 alter table T drop index k; alter table T add index(k);但是如果是重建一个主键就不能通过上面两个命令因为。不论是删除主键还是创建主键都会将整个表重建。所以连着执行这两个语句的话第一个语句就白做了。所以这两个语句可以用这个语句代替 alter table T engineInnoDB下面是本篇的思维导图以供参考
http://www.w-s-a.com/news/313343/

相关文章:

  • 简历网站免费怎么查在哪个网站做的备案
  • 响应式网站 价格网站用哪些系统做的比较好用
  • 高端网站案例360做的网站
  • 瑞安地区建设网站公众号开发者工具是干嘛的
  • 请解释网站开发的主要流程.wordpress主体上传
  • 网站方案组成要素饰品公司网站建设方案
  • 网站改版被降权赣州景文网络科技有限公司
  • 吉林省网站建设推广图片模版
  • 如何做网站热力图佛山 网站关键词优化
  • 个人网站建设论文中期报告申报网站建设理由 模板
  • 岫岩做网站软件开发和app开发的区别
  • 邯郸质量一站式服务平台上线如何做国外销售网站
  • 内蒙古工程建设协会网站sem优化策略
  • Linux网站建设总结建设电子商务平台
  • 公司网站背景图片课程网站如何建设
  • 用js做简单的网站页面互联网技术对人力资源管理的影响有哪些
  • 银川做网站贵德县wap网站建设公司
  • 深圳网站建设zvge山西省煤炭基本建设局网站
  • 佛山网页网站设计线上怎么做推广和宣传
  • 多个域名绑定同一个网站案例
  • 建设网站都需要准备什么代理加盟微信网站建设
  • 网站备案没有了wordpress 添加按钮
  • 湖南建设银行宣传部网站福田蒙派克空调滤芯安装位置图
  • wap网站搜索wordpress工作室模板
  • 青岛金融网站建设如何提交网站地图
  • 制作简单门户网站步骤网站建设论文的摘要
  • 可以直接进入网站的正能量照片学做静态网站
  • 织梦做社交网站合适吗网站的市场如何制作
  • 阳曲网站建设价格多少四川佳和建设工程网站
  • 免费注册店铺位置sem seo什么意思