面试之数据库相关

一、数据库引擎 Engine = Innodb 时才支持事务

ACID原则:

  • A(原子性Atomicity)不可分割性,要么全成功,要么全失败
  • C(一致性Consistency)在事务开始之前和结束之后,数据库完整性没有被破坏
  • I (隔离性Isolation)允许多个并发事务同时读写,防止交叉执行造成的数据不一致
  • D(持久性Durability)事务结束后,对数据的修改是永久的,系统故障宕机不会造成数据丢失

隔离级别:

  1. 读未提交(Read Uncommitted):会出现脏读,也就是可能读取到其他会话中未提交事务修改的数据,性能最好也最不安全
  2. 读已提交(Read Committed):只能读取到已经提交的数据,但不可重复读。Oracle默认该级别
  3. 可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的,在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读。mysql(InnoDB)默认级别。
  4. 串行化(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞,最安全但性能也最差

二、MySql集群如何同步数据

主从:主负责增删改查,从负责同步数据,读写分离。主服务建立二进制binlog文件,每当产生语句变化或磁盘变化时,就写入日志文件。从服务读取主服务的binlog文件,转成从服务的relaylog,同步data。主服务建立授权复制账号,从服务利用账号监听主服务的变化。

主主:两服务互相监听对方的变化,一方变化,另一方同步。两服务同时建立二进制binlog文件和授权账号,将发生的变化写入日志。

三、Mybatis和Hibernate区别

Hibernate五大核心接口:

  • configration 配置并启动hibernate
  • SessionFactory 初始化hibernate
  • Session 持久化对象以及CRUD操作
  • Transaction 负责事务
  • Query和Criteria 数据库查询

优点:基于ORM映射,通过操作对象自动生成sql(hql),低侵入,跨数据库移植性好,支持二级缓存(一级:session,内置每个类有唯一的OID;二级:SessionFactory 生命周期与应用程序一直,或者整合第三方缓存)

缺点:调优难,批量更新问题,学习门槛高

mybatis

优点:半ORM映射,轻量级,易学门槛低,容易调优

缺点:数据库移植性差,二级缓存不佳(一级:默认sqlsession;二级:mybatis-config.xml配置cacheEnable value=true开启。)

未完待续....

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值