【笔记】DB

1.事务

数据库中的执行单元,具有ACID特性,事务能够保证事件内部的sql语句同事成功或失败,控制事务的安全访问。

1.1ACID特性

  • 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  • 一致性(Consistency):要么都成功,要么都失败。
  • 隔离性(Isolation):并发执行的各个事务之间不能互相干扰。
  • 持久性(Durability):事务一旦提交,它对数据库中的数据的改变就应该是永久性的。

1.2四种隔离级别

  • Read Uncommitted:最低的事务隔离级别,一个事务还没提交时,它做的变更就能被别的事务看到。
  • Read committed:保证一个事物提交后才能被另外一个事务读取。大多数数据库的默认级别,比如 Sql Server , Oracle。
  • Repeatable read:多次读取同一范围的数据会返回第一次查询的快照,即使其他事务对该数据做了更新修改。事务在执行期间看到的数据前后必须是一致的。mysql默认。
  • Serializable(可串行):最高代价但最可靠的事务隔离级别。读写会加锁,当出现冲突时,后访问的事务必须等前一个事务执行完成,才能继续执行。

脏读、不可重复读、幻读

  • 脏读:某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
  • 不可重复读:在同一个事务内,两个相同的查询返回了不同的结果。
  • 幻读:读会读到上一次没有返回的记录,看起来是幻影一般。
    在这里插入图片描述

1.3spring源码阅读–@Transactional实现原理

2.MySQL几种常用的存储引擎区别

特性 InnoDB MyISAM MEMORY
事务 支持
存储限制 64TB
空间使用
内存使用
处理速度
对外键的支持 支持
存储位置 磁盘 磁盘 内存

同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

Statement和PreparedStatement的区别

PS性能更好

  • PS接口代表预编译的语句,可以减少sql的编译错误并增加安全性(防止注入)。
  • PS中sql语句是可以带参数的,避免了用字符串连接拼接sql语句的麻烦。
  • 批量处理sql或频繁执行相同查询时,PS性能优势明显,由于DB可以将编译优化后的sql语句缓存起来,下次执行相同结构的语句就会更快。

数据库连接池原理

  • 在系统初始化的时候,将创建一定数量的数据库连接作为对象存储在内存中
  • 当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。
    使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。
  • 连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。
  • 最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
发布了37 篇原创文章 · 获赞 0 · 访问量 1134

猜你喜欢

转载自blog.csdn.net/qq_25046005/article/details/104412578
DB