数据库索引、三范式、事务

索引

索引(Index)是帮助 MySQL 高效获取数据的数据结构。常见的查询算法,顺序查找,二分查找,二叉排序树查找,哈希散列法,分块查找,平衡多路搜索树 B 树(B-tree)。

常见索引原则有
  1. 选择唯一性索引:唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。

  2. 为经常需要排序、分组和联合操作的字段建立索引:

  3. 为常作为查询条件的字段建立索引。

  4. 限制索引的数目:越多的索引,会使更新表变得很浪费时间。

  5. 尽量使用数据量少的索引:如果索引的值很长,那么查询的速度会受到影响。

  6. 尽量使用前缀来索引:如果索引字段的值很长,最好使用值的前缀来索引。

  7. 删除不再使用或者很少使用的索引

  8. 最左前缀匹配原则,非常重要的原则。

  9. 尽量选择区分度高的列作为索引:区分度的公式是表示字段不重复的比例

  10. .索引列不能参与计算,保持列“干净”:带函数的查询不参与索引。

12 . 尽量的扩展索引,不要新建索引。

数据库三范式

范式是具有最小冗余的表结构。3 范式具体如下:

第一范式(1st NF -列都是不可再分)

第一范式的目标是确保每列的原子性:如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

在这里插入图片描述

第二范式(2nd NF-每个表只描述一件事情)

首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。 第二范式要求每个表只描述一件事情。

image-20240102200205249

第三范式(3rd NF- 不存在对非主键列的传递依赖)

第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。除了主键订单编号外,顾客姓名依赖于非主键顾客编号。

在这里插入图片描述

数据库是事务

事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行 。事务是一个不可分割的工作逻辑单元事务必须具备以下四个属性,简称 ACID 属性:

原子性(Atomicity)
  1. 事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
一致性(Consistency)
  1. 当事务完成时,数据必须处于一致状态。
隔离性(Isolation)
  1. 对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
永久性(Durability)
  1. 事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

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

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

相关文章

树与二叉树笔记整理

摘自小红书 ## 树与二叉树 ## 排序总结

eclipse中更改jdk版本

文章目录 步骤1:installed JREs步骤2:选择已安装的jdk步骤3:项目配置 步骤1:installed JREs 在eclipse上方工具栏找到Window -->Preferences,如下图所示: 选择Installed JREs 点击 Add 按钮, 选择Stand…

优化Adams许可管理流程,提高仿真分析效率与合规性

在工程仿真领域,Adams软件是一款广泛使用的动力学分析工具。然而,随着项目的不断扩大和复杂化,如何优化Adams许可管理流程已成为了一个重要的问题。为了帮助用户更好地管理和维护Adams软件的许可,本文将介绍优化许可管理流程的方法…

【字典树Trie】LeetCode-139. 单词拆分

139. 单词拆分。 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "leetcode&q…

MySQL是如何保证数据一致性的?

文章目录 前言MySQL保证的一致性MySQL发生不一致环节并发冲突redolog不完整binlog&redolog不一致 MySQL解决不一致方案加锁解决并发冲突undolog解决redolog不完整XA两阶段提交解决binlog和redolog的不一致 总结 前言 通过上文《MySQL是如何保证数据不丢失的?》…

Ubuntu安装CUDA出在三个cuda相关文件夹?

按照网上的教程,在/usr/local中操作cuda文件夹,但是发现这里会出现不止一个cuda文件夹: 可以看大这里有cuda、cuda-11、cuda-11.8三个文件夹,实际上我安装的是11.8的cuda,那么第三个文件是好理解的,就是我…

Django Web框架

1、创建PyCharm项目 2、安装框架 pip install django4.2.0 3、查看安装的包列表 4、使用命令创建django项目 django-admin startproject web 5、目录结构 6、运行 cd web python manage.py runserver7、初始化后台登录的用户名密码 执行数据库迁移生成数据表 python man…

Mybatis-plus动态表名配置

一、pom文件依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency> 二 、mybatis配置类 2.1 表名设置工具类 TableNameHelper pack…

React-hook-form-mui(二):表单数据处理

前言 在上一篇文章中&#xff0c;我们介绍了react-hook-form-mui的基础用法。本文将着表单数据处理。 react-hook-form-mui提供了丰富的表单数据处理功能&#xff0c;可以通过watch属性来获取表单数据。 Demo 下面是一个使用watch属性的例子&#xff1a; import React from…

【Redis交响乐】Redis中的数据类型/内部编码/单线程模型

文章目录 一. Redis中的数据类型和内部编码二. Redis的单线程模型面试题: redis是单线程模型,为什么效率之高,速度之快呢? 在上一篇博客中我们讲述了Redis中的通用命令,本篇博客中我们将围绕每个数据结构来介绍相关命令. 一. Redis中的数据类型和内部编码 type命令实际返回的…

【MATLAB】EMD_LSTM神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 EMD-LSTM神经网络时序预测算法是一种结合了经验模态分解&#xff08;EMD&#xff09;和长短期记忆神经网络&#xff08;LSTM&#xff09;的时间序列预测方法。 EMD是一种处理非平稳信号的…

Linux的引导过程与服务控制

一.开机启动的完整过程 引导过程&#xff1a; 1.bios加电自检 检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 服务器主机开机以后&#xff0c;将根据主板BIOS中的设置对CPU、内存、显卡、键盘灯设备进行初步检测&#xff0c;检测成功后根…

stable diffusion 基础教程-图生图

界面 图生图大概有以下几个功能: 图生图涂鸦绘制局部绘制局部绘制(涂鸦蒙版)其常用的也就上面四个,接下来逐步讲解。 以图反推提示词 图生图可以根据反推提示词来获取相应图片的提示词,目前3种主流方式,如下: CLIP反推提示词:推导出的文本倾向于自然语言的描述方式,…

openmediavault(OMV) (26)网络(1)ddns-go

简介 "ddns-go" 是一个动态域名解析(Dynamic DNS)工具,用于更新域名的IP地址。它可以自动检测你的公共IP地址,并将其更新到指定的域名解析服务商,以确保你的域名始终与最新的IP地址相匹配。 安装 hub.docker.com上下载ddns-go镜像 配置compose文件 --- versio…

C++系列十一:C++指针

C指针 1. 指针的声明和初始化2. 指针的运算3. 指针与数组4. 指针与函数参数传递5. 指针与动态内存分配6. 指针与多维数组7. 指针与函数返回值8. 指针与内存管理9. 指针的高级应用 指针是C中一个非常重要的概念&#xff0c;它是指向变量、数组或对象的内存地址的引用。通过指针&…

LeetCode 466. 统计重复个数,循环字符串匹配优化

一、题目 1、题目描述 定义 str [s, n] 表示 str 由 n 个字符串 s 连接构成。 例如&#xff0c;str ["abc", 3] "abcabcabc" 。 如果可以从 s2 中删除某些字符使其变为 s1&#xff0c;则称字符串 s1 可以从字符串 s2 获得。 例如&#xff0c;根据定义&a…

在 sealos 上使用 redisinsight 完美管理 redis

先起一个 redis 集群&#xff0c;在 sealos 上可以点点鼠标就搞定&#xff1a; 简单两步&#xff0c;redis 集群搞定。 再启动 RedisInsight, 是一个 redis 的可视化管理工具。 就可以看到部署后的地址了。进去之后填写 redis 的链接信息即可&#xff1a; 链接信息在数据库的…

STM32MP157/linux驱动学习记录

1. uboot烧录 2.linux安装nfs服务 sudo apt-get install nfs-kernel-server rpcbind安装nfs服务 在用户根目录下创建一个名为“linux”的文件夹&#xff0c;以后所有的东西都放到这个“linux”文件夹里面&#xff0c;在“linux”文件夹里面新建一个名为“nfs”的文件夹&#…

【Rust日报】2024-01-01 使用 Rust 构建生产级微服务

使用 Rust 构建生产级微服务 这个由sanyi编写的博客系列 “在Rust中构建生产就绪微服务” 涵盖了Rust中构建生产就绪微服务的过程。以下是每篇博客的主要主题总结&#xff1a; 设置工作空间&#xff1a; 为Rust应用程序设置多包工作空间。 添加CLI子命令&#xff1a; 实现一种简…

Android 车联网——CarPropertyService介绍(三)

一、简介 Android CarPropertyService 是一个用于与车辆系统通信的服务。它是 Android Auto 中的一个重要组件,绝大部分与车辆硬件功能相关联的属性,如空调、座舱功能、车辆传感器等都是通过 CarPropertyService 来读取或者设置的。 CarPropertyManager 是 CarPropertyServic…