Mysql-事务、视图和索引

目录

事务

操作

步骤

特性

并发事务问题

事务隔离级别

索引

作用

分类

主键索引(PRIMARY KEY)

唯一索引(UNIQUE)

常规索引(INDEX)

全文索引(FULLTEXT)

管理索引

数据备份

视图


事务

       事务就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行。

        Mysql事务处理只支持 InnoDB 和 BDB 数据表类型。

操作

  • ,开启事务

    start  transaction 或 begin ;

  • 提交事务

    commit ;

  • 回滚事务

    rollback ;

  • 开启Mysql数据库的自动提交

    set autocommit = 1 ;

    set autocommit = 0 ;    # 关闭自动提交模式

    注:Mysql中默认是自动提交,使用事务时应先关闭自动提交


步骤

事务处理过程中无错误时提交 COMMIT

事务处理过程中有错误需回滚


特性

事务必须具备以下四个属性,简称ACID属性

  • 原子性(Atomicity)
    • 事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性(Consistency)
    • 事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性(Isolation)
    • 数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
    • 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
  • 持久性(Durability)
    • 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

并发事务问题

脏读:一个事务读到另外一个事务还没有提交的数据。

不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 "幻影"。


事务隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted
Read committed×
Repeatable Read(默认)××
Serializable×××

查看事务的隔离级别

SELECT @@TRANSACTION_ISOLATION;

设置事务的隔离级别

SET  [ SESSION | GLOBAL ]  TRANSACTION  ISOLATION  LEVEL

 { READ UNCOMMITTED |  READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

注意:事务隔离级别越高,数据越安全,但是性能越低。


索引

作用

  • 提高查询速度
  • 确保数据的唯一性
  • 可以加速表和表之间的连接
  • 实现表与表之间的参照完整性
  • 使用分组和排序子句进行数据检索时
  • 可以显著减少分组和排序的时间,全文检索字段进行搜索优化

分类

主键索引(PRIMARY KEY

主键:某一个属性或属性的组合能唯一标识一条记录

特点:

  • 最常见的索引类型
  • 确保数据记录的唯一性
  • 确定特定数据记录在数据库中的位置

唯一索引(UNIQUE

作用:避免同一个表中某数据列中的值重复

与主键索引的区别:

  • 主键索引只能有一个
  • 唯一索引可有多个

常规索引(INDEX

作用:快速定位特定数据

注意:

  • index和key关键字都可设置常规索引
  • 应加在查找条件的字段
  • 不宜添加太多常规索引,影响数据的插入、删除和修改操作

全文索引(FULLTEXT

作用:快速定位特定数据

注意:

  • 只能用于MyISAM类型的数据表
  • 只能用于 CHAR VARCHARTEXT数据列类型
  • 适合大型数据集

管理索引

创建索引

  • 创建表时添加

CREATE TABLE  `result` (

       //省略一些代码

     INDEX/KEY   `ind`  (`studentNo`, `subjectNo`)

)

  • 建表后追加

ALTER TABLE  表名  ADD  索引类型 (数据列名);

删除索引

drop index  索引名  on   表名

alter table  表名   drop index  索引名

alter table  表名   drop primary key  //主键索引

查看索引

show index(或keys) from 表名

索引准则

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表建议不要加索引
  • 索引一般应加在查找条件的字段

哪些情况需要创建索引?

  • 主键自动建立唯一索引
  • 频繁作为查询条件的字段应该创建索引
  • 查询中与其他表关联的字段,外键关系建立索引
  • 频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引
  • WHERE条件里用不到的字段不创建索引
  • 单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)
  • 查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度
  • 查询中统计或者分组字段

数据备份

数据库备份必要性

  • 保证重要数据不丢失
  • 数据转移

Mysql数据库备份方法

  • mysqldump 备份工具
  • 数据库管理工具
  • 直接拷贝数据库文件和相关配置文件

mysqldump 客户端

  • 作用:
    • 转储数据库
    • 搜集数据库进行备份
    • 将数据转移到另一个SQL服务器(不一定是Mysql服务器)
  • 语法:

    mysqldump  -h  主机名  -u  用户名  -p [options] 数据库名

    [ table1 table2 ] > path / filename.sql 


视图

什么是视图?
视图是由查询结果形成的一张虚拟表。

什么时候要用到视图?
如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询

视图的创建语法:
create view 视图名 as select 语句;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

愚人钊呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值