数据库相关的题目频频出现在各大公司的技术岗位面试中,而且内容变化多端,让面试的小伙伴措手不及,但是问法再多,却万变不离其宗,掌握好内容的本质,才是最重要的。今天小树懒来给大家总结了两道最近被问到的MySQL面试题,如果有更好的理解,可以留言补充哦。
答案是不区分的
1.设置“COLLATE”属性值为“utf8_bin”或者“utf8_gerneral_cs”,utf8_bin表示二进制比较,同时也支持区分大小写;在Mysql5.6.10版本中,不支持utf8_genral_cs;
2.在创建表的时候,指定表字段COLLATE 为utf8_bin或者utf8_general_cs(注意版本),如:
alter table sample modify column module varchar(128) COLLATE utf8_bin ;
3.修改字段为BINARY:
alter table sample modify column module varchar(128) BINARY;
4.查询语句字段前面加BINARY:
select * from sample where BINARY module=’SAMPLE’;
1.错误日志:记录出错信息,也记录一些警告信息或者正确的信息
2.慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中
3.二进制日志:记录对数据库执行更改的所有操作
4.查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行
四种事务的隔离级别分别是读未提交(RU)、读已提交(RC)、可重复读(RR)、串行(这点在之前的文章中已讲过)
1.因为事务在修改页时,要先记 undo ,在记 undo 之前要记 undo 的 redo, 然后修改数据页,再记数据页修改的 redo。 redo(里面包括 undo 的修改)一定要比数据页先持久化到磁盘。
2.当事务需要回滚时,因为有 undo,可以把数据页回滚到前镜像的状态。
3.崩溃恢复时,如果 redo log 中事务没有对应的 commit 记录,那么需要用 undo 把该事务的修改回滚到事务开始之前。如果有 commit 记录,就用 redo 前滚到该事务完成时并提交掉。
1.事务的原子性是通过 undo log 来实现的
2.事务的持久性性是通过 redo log 来实现的
3.事务的隔离性是通过 (读写锁+MVCC)来实现的