mysql10道面试不得不会的基础题
mysql10道面试不得不会的基础题人力资源?
1. mysql有哪几种log
重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log)人力资源,中继日志(relay log)
错误日志:记录出错信息,也记录一些警告信息或者正确的信息人力资源。
查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行人力资源。
慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中人力资源。
二进制日志:记录对数据库执行更改的所有操作人力资源。
中继日志:中继日志也是二进制日志人力资源,用来给slave 库恢复
事务日志:重做日志redo和回滚日志undo
2. MySQL的复制原理以及流程
3. 事物的4种隔离级别
隔离强度逐渐增强,性能逐渐变差人力资源。
读未提交(RU) READ UNCOMMITTED
读已提交(RC) READ COMMITT
可重复读(RR) REPEATABLE READ
串行化 SERIALIZABLE
事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可人力资源。
4. 相关概念
脏读
脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能不会存到数据库中,也就是不存在的数据人力资源。读到了并一定存在的数据,这就是脏读。
可重复读
可重复读指的是在一个事务内,开始读到的数据和事务结束前的任意时刻读到的同一批数据都是一致的人力资源。通常针对数据更新(UPDATE)操作。
不可重复读
对比可重复读,不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响,比如其他事务改了这批数据并提交了人力资源。通常针对数据更新(UPDATE)操作。
幻读
展开全文
幻读是针对数据插入(INSERT)操作来说的人力资源。假设事务 A 对某些行的内容作了更改,但是还未提交,此时事务 B 插入了与事务 A 更改前的记录相同的记录行,并且在事务 A 提交之前先提交了,而这时,在事务 A 中查询,会发现好像刚刚的更改对于某些数据未起作用,但其实是事务 B 刚插入进来的,让用户感觉很魔幻,感觉出现了幻觉,这就叫幻读。
5. MySQL数据库几个基本的索引类型
普通索引、唯一索引、主键索引、全文索引
6. drop、delete与truncate的区
SQL中的drop、delete、truncate都表示删除人力资源,但是三者有一些差别
1、delete和truncate只删除表的数据不删除表的结构
2、速度,一般来说: drop> truncate >delete
3、delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;
4、如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
7. 数据库的乐观锁和悲观锁是什么人力资源?
悲观锁的特点是先获取锁,再进行业务操作,即 “悲观” 的认为获取锁是非常有可能失败的,因此要先确保获取锁成功再进行业务操作人力资源。通常所说的 “一锁二查三更新” 即指的是使用悲观锁。
通常来讲在数据库上的悲观锁需要数据库本身提供支持,即通过常用的 select … for update 操作来实现悲观锁人力资源。 当数据库执行 select for update 时会获取被 select 中的数据行的行锁,因此其他并发执行的 select for update 如果试图选中同一行则会发生排斥(需要等待行锁被释放),因此达到锁的效果。select for update 获取的行锁会在当前事务结束时自动释放,因此必须在事务中使用。
mysql 还有个问题是 select… for update 语句执行中,如果数据表没有添加索引或主键,所有扫描过的行都会被锁上,这一点很容易造成问题人力资源。因此如果在 mysql 中用悲观锁务必要确定走了索引,而不是全表扫描。
乐观锁的特点先进行业务操作,不到万不得已不去拿锁人力资源。即“乐观”的认为拿锁多半是会成功的,因此在进行完业务操作需要实际更新数据的最后一步再去拿一下锁就好。
乐观锁在数据库上的实现完全是逻辑的,不需要数据库提供特殊的支持人力资源。一般的做法是在需要锁的数据上增加一个版本号,或者时间戳。
西安鸥鹏it教育
乐观锁的两种实现方式:
8. SQL优化方式
9. 从锁的类别上分MySQL都有哪些锁呢人力资源?
从锁的类别上来讲,有共享锁和排他锁人力资源。
共享锁: 又叫做读锁人力资源。 当用户要进行数据的读取时,对数据加上共享锁。共享锁可以同时加上多个。
排他锁: 又叫做写锁人力资源。 当用户要进行数据的写入时,对数据加上排他锁。排他锁只可以加一个,他和其他的排他锁,共享锁都相斥。
相关文章

发表评论