1:mysql数据库相关知识
四种事务隔离级别
- read uncommited(未提交读):
事务中未提交的改动对其他事务是可见的,也称为脏读
- read commited(提交读):
大多数数据库默认才用此级别,mysql不是,一个事务开始时,只能看见已经提交事务的修改,换句话说,一个事务从开始到提交的修改对于其他事务是不可见的,这种级别也可叫不可重复读(nonrepeatable read),因为两次同样的查询,可能会得到不一样的结果
- repeatable read(可重复读):
此级别是mysql的默认级别,该级别解决的脏读的问题,该级别保证了在同一个事务中多次读取同样的记录的结果是一致的,但是还是无法解决幻读的问题(范围查找时会出现别的事务提交的记录,幻行)
- serializeable(可串行化):
这是最高隔离级别,强制事务串行化执行
索引
-
索引的数据结构一般都是b-tree,所以索引是按顺序存储在各页中的,数据越多,数的高度越高,检索越满
- 索引是根据索引行的值保存数据行的索引,
在innodb中,主键索引是聚簇索引(索引的值和行是存储在一起的),索引保存的就是主键值,如果不设置主键,引擎会自动使用唯一的一个非空索引代替,如果没有,会隐试定义一个主键,缺点是通过二级索引查询数据时,命中后都会通过主键值再查找一遍(回表)
在myisam中,索引行是引用物理位置引用的行,优点,二级索引不用回表,而且可以压缩索引
哈希索引:是基于哈希表实现的,一般用于索引列差异较大,能直接命中,查询效率非常高,数据量大之后可能有散列冲突
![技术分享图片](http://image.bubuko.com/info/201903/20190320231744500403.jpg)
golang面试问题
原文:https://www.cnblogs.com/leescre/p/10568418.html