两种数据库引擎和聚簇(非聚簇)索引

一:两种数据库引擎区别及如何选择?

InnoDB和MyISAM的区别?

1:InnoDB支持事务,而MyISAM不支持事务。这是MYSQL将默认引擎从MYISAM变为INNODB的重要原因之一。

2:INNODB支持外键,而MYISAM不支持。对一个包含外键的INNODB表转为MYISAM会失败。

3:INNODB是聚集索引,MYISAM是非聚集索引。聚簇索引的文件放在主键索引的叶子节点上,因此,INNODB必须要有主键,通过主键索引效率很高,,但是辅助索引需要两次查询,然后在通过主键查询到数据,因此,主键不应该过大,因为主键过大,其他索引也会很大,而MYISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的。

4:INNODB不保存表的具体行数,执行select*from table时会全表扫描。而MYISAM用一个变量保存整个表的行数,执行上述语句时只需要读出该变量即可,速度很快。

5:INNODB最小的锁粒度时行锁,MYISAM最小的是表锁,一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发受限,这也是替换的重要原因之一。

如何选择?

1:是否支持事务,如果需要选择INNODB,否则可以考虑MYISAM。

2:如果表中绝大多数都是读查询,可以考虑MYISAM,如果读写很频繁,使用INNODB。

3:系统崩溃后,MYISAM恢复起来更困难,能否接受,不能选择INNODB,

4:MYSQL5.5版本以后INNODB已经成为MYSQL默认引擎,说明优势还是有目共睹的,不知如何选择就是用INNODB。

删除数据库需要注意什么?

使用drop database命令需要非常谨慎。再执行改命令时,MYSQL不会有任何提示确认信息,用drop database声明删除数据库后,数据库中存储的数据及数据表也会一并被删除,不能恢复。

二:删除数据库时需要注意什么?

使用DROP DATABASE命令时要非常谨慎,在执行该命令时,MySQL 不会给出任何提醒确认信息。用DROP DATABASE声明删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。

三:常见的表约束

主键:主码。代表这条记录的唯一性,主键是不能重复的,而且不能为空。设置数据加快数据库的查询速度

主键可以由一列组成或多列组成,多列最多两列。

能选一列绝对不选两列

主键的值很少更改,计划不改的

primary key :

auto_increment:自增的

【oracle数据库主键不能自诊,sqlserver用的是标识列】

唯一:unique

非空

默认值

外键

检查约束check 【mysql 5.x不支持】 mysql8.0支持了check约束。

四:聚簇索引(数据)和非聚簇索引(地址)

在MySQL中不管是InnoDB还是MyISAM都是使用B+树来组织表中的数据的。但是在具体实现方法上略有不同。

InnoDB的主键索引是聚簇索引,在InnoDB的实现中,把主键作为关键字组织到B+树的各个节点上,而叶子节点上存储的是主键列的值和对应的整行数据。注意这里说的是将表中实际的一整行数据直接存到叶子节点上。

MyISAM是非聚簇索引,在MyISAM的实现中,叶子节点中存储的是一行数据在磁盘上的地址(可以理解为行号)。

所以聚簇索引和非聚簇索引本质的区别就是B+树的叶子节点上存储的是行数据还是行数据的地址(行号)。

InnoDB中的二级索引的叶子结点中存的是索引列的值和主键值,所以在使用二级索引查询的时候,首先通过二级索引查找到主键值,然后再根据主键值到主键索引的叶子结点中查到对应的整行数据。(回表查询:如果查询列全部命中索引则不需要回表

而MyISAM的二级索引的叶子节点中保存的是指向物理数据的指针,因此它的主建索引和二级索引的结构并没有任何区别,只是说主键索引的索引值是唯一且非空的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易云维®FMCS厂务系统创造工厂全新的“数字低碳智能”应用场景

近年来,新一代信息技术的高速发展为传统工业与制造业领域带来了新的机遇。信息技术加持下的制造技术发展出了新的生产方式、产业形态与管理模式。通过搭建FMCS厂务系统进行数字化转型来实现数据互联互通与业务高效协同,助力企业向安全、绿色、节能、高效…

上海港股通开通条件是什么?港股通交易佣金最低多少?

上海港股通权限开通条件有: 1、申请权限开通前20个交易日证券账户日均资产不低于50万元; 2、进行港股知识测试,且测试分数不低于80分; 3、风险承受能力等级需要匹配,无投资经验期限的门槛 港股通的股票范围是香港联合交易所恒生综合大型股…

MATLAB图论合集(二)计算最小生成树

今天来介绍第二部分,图论中非常重要的知识点——最小生成树。作为数据结构的理论知识,Prim算法和克鲁斯卡尔算法的思想此处博主不详细介绍,建议在阅读本帖前熟练掌握。 对于无向带权图,在MATLAB中可以直接以邻接矩阵的方式创建出来…

Flutter实现StackView

1.让界面之间可以嵌套且执行动画。 2.界面的添加遵循先进后出原则。 3.需要使用AnimateView,请看我上一篇博客。 演示: 代码: Stack: import package:flutter/cupertino.dart;///栈,先进后出 class KqWidgetStack {final Lis…

JVM知识点(一)

1、JVM基础概念 (1)JVM、JRE、JDK JRE:JVM基本类库组成的运行环境就是JRE。JVM自己是无法完成一次编译,处处运行的,需要有一个基本类库告诉JVM如何操作运行,如如何操作文件,连接网络等&#x…

JVM 给对象分配内存空间

指针碰撞空闲列表TLAB 为对象分配空间的任务实际上便等同于把一块确定大小的内存块从Java堆中划分出来。 指针碰撞:(Bump The Pointer) 堆的内存是绝对规整的,内存主要分为两部分,所有使用过的内存被放在一边&#x…

LeetCode每日一题:823. 带因子的二叉树(2023.8.29 C++)

目录 823. 带因子的二叉树 题目描述: 实现代码与解析: dp hash 原理思路: 823. 带因子的二叉树 题目描述: 给出一个含有不重复整数元素的数组 arr ,每个整数 arr[i] 均大于 1。 用这些整数来构建二叉树&#x…

达梦SQL书写注意事项

模糊查询 模糊查询like后面的字段要求用单引号引用,不能使用双引号 select * from user where name like %小组 分组查询 select查询的列字段必须在分组中的字段存在 正确: select name,age from user group by name,age 错误: select * f…

UE 透明物体绘制准备

PassProcessor注册: Engine/Source/Runtime/Renderer/Private/BasePassRendering.cpp透明的5个PassProcessor都继承BassPassProcessor。透明物质绘制,也是走的basepasspixelshader。 REGISTER_MESHPASSPROCESSOR_AND_PSOCOLLECTOR(BasePass, CreateBas…

华为OD机试 - MELON的难题 - 动态规划(Java 2023 B卷 100分)

目录 一、题目描述二、输入描述三、输出描述四、动态规划五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 一、题目描述 MELON有一堆精美的雨花石(数量为n,重量各异),准备送给…

类和对象(上)

💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…

socket

Socket是一种用于网络通信的编程接口,它提供了在计算机网络中进行数据传输的方法。通过Socket,可以在不同主机之间建立网络连接,并通过发送和接收数据来进行通信。在C语言中,可以使用Socket函数库(如BSD Socket或Winso…

深入探讨Eureka的三级缓存架构与缓存运行原理

推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,GPT,SDXL等个人总结文档 资源分享 「java、python面试题…

Zblog博客网站搭建与上线发布:在Windows环境下利用cpolar内网穿透实现公网访问的指引

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

RHCE——十一、NFS服务器

NFS服务器 一、简介1、NFS背景介绍2、生产应用场景 二、NFS工作原理1、示例图2、流程 三、NFS的使用1、安装2、配置文件3、主配置文件分析3.1 实验1 4、NFS账户映射4.1 实验24.2 实验3 四、autofs自动挂载服务1、产生原因2、安装3、配置文件分析4、实验45、实验5 一、简介 1、…

算法通关村十三关 | 进制转换问题处理模板

1. 七进制数 题目&#xff1a;LeetCode504&#xff1a;504. 七进制数 - 力扣&#xff08;LeetCode&#xff09; 思路 进制转换&#xff0c;对几转换就是对几求余&#xff0c;最后将所有的余数反过来即可、如果num< 0&#xff0c;先取绝对值&#xff0c;再进行操作。 100转7…

【笔记】泛型以及如何绕过泛型定义

泛型定义以及其带来的好处 泛型使类型&#xff08;类和接口&#xff09;能够在定义类、接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似&#xff0c;类型参数为您提供了一种通过不同输入重复使用相同代码的方法。区别在于形式参数的输入是值&#xff0c;而…

leetcode分类刷题:链表(一、创建虚拟头节点)

1、现在再看链表问题&#xff0c;发现之前对傻傻分不清的cur.next有了更清晰的理解了&#xff1a;以cur变量表示当前节点&#xff0c;cur.next为当前节点的指针或下个节点&#xff0c;以上两个含义是一个意思&#xff0c;但在实际代码里选择其中一个进行理解会在逻辑上更清晰 2…

【WINAPI】文件读写操作问题

问题描述 在利用WINAPI中的WriteFile和ReadFile函数进行文件读写操作时&#xff0c;出现无法正常读写文件报错。 分析问题 查阅WINAPI源码&#xff0c;查看参数列表各个参数的数据类型。 发现其中第二个参数&#xff0c;也就是需要写进文件的真实数据&#xff0c;其数据类型…

go http-proxy

我们这里主要讲使用HTTP&#xff0f;1.1协议中的CONNECT方法建立起来的隧道连接&#xff0c;实现的HTTP Proxy。这种代理的好处就是不用知道客户端请求的数据&#xff0c;只需要原封不动的转发就可以了&#xff0c;对于处理HTTPS的请求就非常方便了&#xff0c;不用解析他的内容…