带你深入了解Java!二十八、事物、视图、索引、备份和恢复!

< 事物、视图、索引、备份和恢复 >

一、掌握MySQL 的事物处理方法

业务:请假、报销、办卡、入学、登陆、注册…一定固定顺序的流程
事物的应用例如:
银行转账: A 转账给 B 500元
1、将A的账户余额扣除500
2、将B 账户余额添加500

  • 事物:
    一些列操作要么成功!要么都失败!
    RDB 安全、事物支持好
    NoSQL 事物一般并不太强(Redis是假事物)

  • MySQL 存储引擎:
    INNSQL(默认使用,高频采用)
    BDB 才支持事物
    MyISAM 也是常用的存储引擎 但是它在事物等方面不支持,它的查询性能比较强也支持全文索引

  • 自动开启事物BEGIN START TRANSACTION(tx)
    其实在使用了支持事物的引擎后,事物就已经在使用了!因为SQL中默认自动提交事物!
    1、事物的使用:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    2、通过关闭自动提交来使用事物 SET autocommit = 0(关闭)| 1 (开启)
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!

DELETE 和 TRUNCATE 区别 DDL会直接结束事物!
未来和Java 、 Python 、JS 等集成使用方方式
JDBC (Java DataBase Connectivity)Java数据库连接技术
带你深入了解Java!二十八、事物、视图、索引、备份和恢复!

二、理解MySQL的ACID原则[面试题]

四大特性:
原子性、一致性、隔离性、持久性

  • 1、 原子性
    事物是不可分隔的!要么成功要么失败!
  • 2、一致性
    事物执行前和事物执行后数据总量不变!
  • 3、隔离性
    多个事物之间应该彼此独立,不受影响!
    事物并发引发的问题可能有:脏读、不可重复读、幻读/虚读

    脏读:
    一个读取到了另外一个事物未提交的数据!(基本不允许,因为事物可能回滚)
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    不可重复读:
    一个事物在执行期间读取了多次内容,结果部一样,主要针对另一个数据对同样的内容进行了修改操作(UPDATE)
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    幻读/虚读:
    一个事物在执行全表性操作性时,另一个事物进行可插入操作,那么第一个事物就会发现
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    四大隔离级别:
    1、读未提交 任何事物并发问题都无法解决!(基本不采用)
    2、读已提交 能解决脏读问题!(Oracle 数据库默认)
    3、可重复读 MySQL默认!可以解决脏读和不可重复读问题!(MySQL默认)
    4、串行化 最严格的隔离级别!可以解决所有的并发问题!(基本不采用)
  • 4、持久性
    事物在执行完毕之后必须能走将数据永久保存在数据库中!

三、了解视图的使用

  • 视图:
    它是一种虚拟表,可以用来降低查询复杂的!也可以适用于不同全体数据的不同要求!
  • 视图的创建:[视图是一张虚拟表,你对它的改动最终影响到真是数据物理表!]
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 删除视图:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 视图的注意事项:
    1、视图仅仅做为查询使用即可!不要进行修改等操作!
    2、视图也可以嵌套另一个视图
    3、视图的数据是来自于对应的物理表!

四、创建数据库索引的创建

带你深入了解Java!二十八、事物、视图、索引、备份和恢复! - 索引:
提升查询性能!将一个列或者一组列进行相关组合排序使用。

  • 原理
    类似于字典前的目录页
  • 索引的分类:
    普通索引、唯一索引、主键索引、符合索引、全文索引、空间索引
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    普通索引:提升查询性能!
    唯一索引:除了提升查询性能,还可以保证列/字段值唯一
    主键索引:除了提升查询性能,还可以保证主键的特点 非空且唯一
    符合索引:可以将多个字段组合提升查询性能
    全文索引:它只能在MyISAM存储引擎中使用 提升大数据量情况下对文本查找的性能
    全文索引的格式: * 查询内容 studentname 全文索引名称 ‘love’ 查询内容
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 创建添加索引:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 检验当前SQL的性能
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 删除索引:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 删除主键索引:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
  • 查看索引列表:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!

索引并不是一味的创建即可提升性能!因为索引也会占用存储空间!而且索引会在操作时进行索引验证
需要谨慎的设计和使用!

  • 设计:
    【建议】

    1、 频繁搜索的的列!
    2、 频繁用作于查询选择的列!
    3、 经常用于排序分组的列!
    4、 经常用于连接的列(主键/外键)!
    【不建议】
    5、仅包含几个不同值的类!例如: 性别、学历。。。
    6、在列表中仅包含几行的列!数据不多的!
  • 使用:
    1、 尽量不要使用 * 来查找数据!
    2、 索引应该尽量小,在字节数小的列上建立!
    3、 如果where 中有多个条件表达式 那么索引列的条件表达式要放在前面
    4、 避免对索引进行计算表达式

五、了解MySQL 数据的备份和恢复

  • 1】、备份数据库:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!

  • 2】、参数选择:
    mysqldump 查看可选参数 dos
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!

  • 3】、恢复数据库
    (1)、
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    (2)、
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    先切换到要恢复数据的数据库
    source 数据文件地址;

  • 4】、单独对字段数据进行备份和恢复操作:
    备份:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!
    恢复:
    带你深入了解Java!二十八、事物、视图、索引、备份和恢复!