服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - Mysql事务索引知识汇总

Mysql事务索引知识汇总

2022-10-09 15:49Lokemow Mysql

这篇文章主要介绍了Mysql事务索引知识汇总,mysql事务是用于处理操作量大、复杂性高的数据,索引能加快数据库的查询速度并高效获取指定的数据,下文相关详细内容,需要的小伙伴可以参考一下

一、事务

          mysql事务是用于处理操作量大、复杂性高的数据

1. 事务特性

  • 原子性:保证每个事务所有操作要么全部完成或全部不完成,不可能停滞在中间环节;如事务在执行过程中出现错误,则会回滚到一致性:事务开始结束后保证数据库的完整性没有被破坏,数据都是按照数据库要求的规范写入。
  • 隔离性:数据库允许多个事务同时对数据进行读写改操作,隔离性则可以防止多个事务由于交叉执行时导致数据不一致;事务中隔离分为4个级别。【出现:√ 不会出现:×】
 

脏读

不可重复读 幻读
读未提交

✔️

✔️ ✔️
读已提交 ✖️ ✔️ ✔️
可重复读 ✖️ ✖️ ✔️
串行化 ✖️ ✖️ ✖️

持久性:事务提交后对数据库中的修改则是永久性的。

2. 事务并发时出现的问题

  • 脏读:一个事务在处理过程中读取了另一个未提交的事务数据,当未提交的数据提交后,最终导致数据不一致。
  • 不可重复读:一个事务在多次进行查询返回数据时,另一个事务将数据修改后提交,导致前事务数据产生不同的结果。
  • 幻读:A事务将数据修改完毕时,同一时间B事务新增一条数据,A事务提交后查询发现还有一条数据没有进行修改,好似产生幻觉一样则为幻读。

二、索引

    索引能加快数据库的查询速度并高效获取指定的数据。

优势:

  • 提高数据检索效率,降低数据库IO成本
  • 通过索引列可以对数据进行排序,降低CPU消耗
  • 确保数据唯一性
  • 加速表与表之间连接,实现表与表之间参照完整性

劣势:

  • 占据磁盘空间
  • 降低更新表的效率

1. 索引使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        创建索引     
              普通索引:
                  create index 索引名称 on 表名(列名)
 
              其他索引(举例唯一索引unique):  
                  公式:
                      create unique index 索引名称 on 表名(列名)
                  实例:
                      create table Demo(id int,
                                        name varchar(20),
                                        sex int,
                                        unique index Demo_id(id ASC));
            删除索引
                删除:
                    公式:
                        drop index 索引名 on 表名;
                    实例:
                        drop index Dmoe_id on Demo;

2. 索引类型

  • 主键索引(primary key):对主键进行索引,主键不允许空值。
  • 普通索引(index/key):默认类型,无限制,允许定义索引时有重复值和空值。
  • 唯一索引(unique key):专注于对唯一类型数据进行索引,允许空值。 
  • 全文索引(full key):用于数值比较、范围过滤、关键字匹配的范围性快速查询。 
  • 联合索引:多列值组成索引,用于多列组合查询。

3. 索引注意原则

  • 索引不是越多越好,数据量小的表不建议添加索引
  • 不建议在经常增删改操作的表中添加索引
  • 索引一般添加在需要索引的列上

三、SQL

             SQL是一种结构化查询语言,用于对数据进行插入、查询、更新、删除操作来管理数据库系统。

1. SQL优点

  • 简单易学,操作性强
  • 大多数数据库都支持SQL
  • SQL操作数据库时大部分的工作由DBMS来完成

2. SQL分类

  • DDL[数据定义语言]:用于操作数据库、表、列,常用语句create、alter、drop;
  • DML[数据操作语言]:用于操作数据库中数据,常用语句insert、update、delect;
  • DCL[数据控制语言]:用于操作访问权限和安全级别,常用语句grant、deny;
  • DQL[数据查询语言]:用于查询数据,常用语句select;

3. SQL语法及关键字                

  • insert into:数据插入操作,语法为insert into 表名(列1,列2)value(值1,值2),插入时列名和值需要一一对应。
  • select from:数据查询操作,语法为select * from 表名;*则代表全部列名,可通过输入列名来查询特定数据。
  • update set:更新操作,语法为update 表名 set 条件A where 条件B,条件A为修改条件,条件B为修改操作。
  • delete from:删除操作,语法为delect from 表名 where 条件A,条件A为删除条件。
  • where:用于sql中条件判断、条件过滤等操作。
  • having:类似于where,一般使用于group by之后,与where区别在于where过滤行,having过滤组。
  • like:用于模糊查询,主要只针对于“字符型”字段,常用"_"和"%"这两种通配符,前者充当占位符,后者代表匹配任意字符。
  • order by:用于数据排序,常用ASC升序排列和DESC降序排列。
  • group by:用于对字段进行分组。
  • not:用于判断表达式真假,类似于java语言中boolean。
  • and:用于在where子句后面将多个条件结合起来。
  • between:用于取两个值之间的数据范围。
  • lnner join:内连接,多表连接时只会显示满足条件的数据结果。
  • left join:左连接,多表连接时只会以左表为基准显示左表全部数据,右表只会显示对应数据,若无对应数据显示null。
  • right join:右连接,与左连接相反;多表连接时只会以右表为基准显示左表全部数据,左表只会显示对应数据,若无对应数据显示null。
  • in:用于嵌套语句查询,常用语子查询中。

四、数据库设计

1. 数据库三大范式

  • 每个字段具有原子性不可再分。
  • 建立在第一范式的基础上,确保数据库表列中只保存一种数据,不可以把多种数据保存在一个数据库表列中。
  • 建立在地二范式的基础上,数据不能存在传递关系,数据库中每个字段和主键都是直接关系。

2. 数据库规范设计

  • 系统需求分析
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 数据库实施
  • 数据库运维

到此这篇关于Mysql事务索引知识汇总的文章就介绍到这了,更多相关Mysql事务索引内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/Lokemow/p/LokemowKai_mysql.html

延伸 · 阅读

精彩推荐
  • Mysqlmysql中提高Order by语句查询效率的两个思路分析

    mysql中提高Order by语句查询效率的两个思路分析

    在MySQL数据库中,Order by语句的使用频率是比较高的。但是众所周知,在使用这个语句时,往往会降低数据查询的性能。 ...

    mysql教程网3802019-11-15
  • Mysql对MySql经常使用语句的全面总结(必看篇)

    对MySql经常使用语句的全面总结(必看篇)

    下面小编就为大家带来一篇对MySql经常使用语句的全面总结(必看篇)。小编觉的挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    jingxian4022020-07-21
  • MysqlMySQL优化之Index Merge的使用

    MySQL优化之Index Merge的使用

    本文主要介绍了MySQL优化之Index Merge的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    程序员小潘6242022-03-07
  • MysqlMySQL是怎么保证主备一致的

    MySQL是怎么保证主备一致的

    大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了 binlog 就可以跟主库保持一致了呢,本文就详细的介绍...

    香农派我最爱8962021-09-27
  • Mysql浅谈MySQL中的group by

    浅谈MySQL中的group by

    这篇文章主要介绍了MySQL中的group by,MySQL的group by用于对查询的数据进行分组;此外MySQL提供having子句对分组内的数据进行过滤。下面来看看文章对此的具体...

    李子捌11652021-12-07
  • Mysql浅析MySQL 主键使用数字还是uuid查询快

    浅析MySQL 主键使用数字还是uuid查询快

    在实际开发中可能会生成uuid作为主键那么疑问来了,到底MySQL 主键使用数字还是uuid查询快呢?下面小编给大家带来实例代码给大家详细介绍,感兴趣的朋...

    来日可期072611442021-09-17
  • Mysqlmysql数据库乱码之保存越南文乱码解决方法

    mysql数据库乱码之保存越南文乱码解决方法

    做一个包含越南文的网站,用户说在保存包含越南文的文章时,MSYQL乱码了,看下面的解决方法 ...

    MYSQL教程网4492020-01-16
  • MysqlMysql避免重复插入数据的4种方式

    Mysql避免重复插入数据的4种方式

    这篇文章主要介绍了Mysql避免重复插入数据的4种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    xcbeyond12222021-04-07