MySQL-MySQL中的InnoDB和MyISAM

本文介绍了MySQL中的两种主要存储引擎InnoDB和MyISAM的特性与差异。InnoDB支持事务处理和外键,适合高并发的修改操作;而MyISAM则支持全文索引,查询效率更高。此外,文章还探讨了B+树在两种引擎中的应用,MyISAM使用非聚簇索引,InnoDB采用聚集索引。
摘要由CSDN通过智能技术生成

MySQL-MySQL中的InnoDB和MyISAM

数据库存储引擎

  数据库存储引擎是数据库底层软件组织,数据库管理系统通过使用数据引擎进行创建,查询,更新和删除数据,不同的存储引擎提供不同的存储机制,索引技巧,锁定水平等功能。不同的存储引擎,还可以获得特定的功能。

查看数据库使用的引擎

show engines;

在这里插入图片描述
  mysql对于多引擎有着很好的兼容,一个数据库服务器上不同的数据库完全可以使用不同的数据引擎,甚至一个数据库中的多个表也可以使用不同的引擎。
其中InnoDB和MyISAM的一些差异:

  • InnoDB支持事务,MyISAM不支持事务,对于 InnoDB 每一条 SQL 语句都默认封装成事务进行提交,这样就会影响速度,优化速度的方式是将多条 SQL 语句放在 begin 和 commit 之间,组成一个事务。
  • InnoDB支持外键,MyISAM不支持外键
  • InnoDB不支持全文索引,MyISAM支持全文索引,查询效率上 MyISAM 要高。
      所以如果一个表修改要求比较高的事务处理,可以选择 InnoDB。这个数据库中可以将查询要求比较高的表选择 MyISAM 存储。

存储引擎原理
  MyISAM 和 InnoDB 两种引擎所使用的索引的数据结构都是B+树
区别:

  • MyISAM中B+树的数据结构存储的内容是实价数据的地址值,它的索引和实际数据是分开的,只不过使用索引指向了实际数据,这种索引的模式被称为非聚簇索引。
  • InnoDB 中 B+ 树的数据结构中存储的都是实际的数据,这种索引有被称为聚集索引。

B+树

在这里插入图片描述

原则:

  • 所有节点关键字是按照递增排列,左小右大

  • 子节点数:非叶子节点的子节点>1,且<=M ,且M>=2,空树除外,M阶代表一个树节点最多有多少个查找路径,M为几,为几叉树。

  • 关键字数:枝节点的关键字数量大于等于 ceil(m/2)-1 个且小于等于 M-1 个(注:ceil() 是个朝正无穷方向取整的函数 如 ceil(1.1)结果为 2)

  • 叶节点的指针为空且叶节点具有相同的深度

     class BPTree; //self explanatory classes	
     class Node	
     {	
       bool IS_LEAF;	
       int *key, size;	
       Node** ptr;	
       friend class BPTree;	
     public:	
       Node();	
     };	
     class BPTree	
     {	
       Node *root;	
       void insertInternal(int,Node*,Node*);	
       void removeInternal(int,Node*,Node*);	
       Node* findParent(Node*,Node*);	
     public:	
       BPTree();	
       void search(int);	
       void insert(int);	
       void remove(int);	
       void display(Node*);	
       Node* getRoot();	
       void cleanUp(Node*);	
       ~BPTree();	
     };
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天津 唐秙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值