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中默认是自动提交,使用事务时应先关闭自动提交


步骤

Mysql-事务和索引_第1张图片

事务处理过程中无错误时提交 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 表名

索引准则

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

数据备份

数据库备份必要性

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

Mysql数据库备份方法

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

mysqldump 客户端

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

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

    [ table1 table2 ] > path / filename.sql

你可能感兴趣的:(Mysql,数据库,sql,mysql,事务,索引)