阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

数据库相关面试知识总结

134次阅读
没有评论

共计 1951 个字符,预计需要花费 5 分钟才能阅读完成。

一、myisam 和 innodb 的区别

1、innodb 支持事务,myisam 不支持事务

2、innodb 支持行级锁,myisam 支持表级锁

3、innodb 支持并发控制,而 myisam 不支持

4、innodb 支持外键,而 myisam 不支持

5、innodb 不支持全文索引,myisam 支持

二、数据库的四种隔离级别,以及它们之间的区别

Read Uncommitted(读取未提交的内容):

在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

Read Committed(读取已提交的内容):

一个事务只能看见已经提交事务所做的改变。因为同一事务的其他实例在该实例处理其间可能会有新的 commit,所以同一 select 可能返回不同结果。

Repeatable Read(可重复读):

这是 MySQL 的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。这种级别会出现幻读。

Serializable(可串行化):

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争;

对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面 3 种现在:

1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。

2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在 T1 时间读取某一行,在 T2 时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。

3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。

不同的隔离级别有不同的现象,并有不同的锁定 / 并发机制,隔离级别越高,数据库的并发性就越差,4 种事务隔离级别分别表现的现象如下表

  隔离级别脏读非重复读 幻像读
read uncommitted允许允许允许
read committed  允许  允许
repeatable read     允许

serializable

   

三、数据库备份方式

1、热备份

2、冷备份

3、温备份

4、二进制日志备份

四:行级锁和表级锁

1、innodb 支持行级锁,而 myisam 支持表级锁

2、表级锁:直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许

    行级锁:仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。

3、行级锁优点:

·        当在许多线程中访问不同的行时只存在少量锁定冲突。
·        回滚时只有少量的更改。
·        可以长时间锁定单一的行。

  缺点:

·        比页级或表级锁定占用更多的内存。
·        当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。
·        如果你在大部分数据上经常进行 GROUP BY 操作或者必须经常扫描整个表,比其它锁定明显慢很多。

4、在以下情况下,表锁定优先于页级或行级锁:
·        表的大部分语句用于读取。
·        对严格的关键字进行读取和更新,你可以更新或删除可以用单一的读取的关键字来提取的一行:
·                UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
·                DELETE FROM tbl_name WHERE unique_key_col=key_value;
·        SELECT 结合并行的 INSERT 语句,并且只有很少的 UPDATE 或 DELETE 语句。
·        在整个表上有许多扫描或 GROUP BY 操作,没有任何写操作。

5、三种锁各有各的特点,若仅从锁的角度来说,表级锁更适合于以查询为主 ,只有少量按索引条件更新数据的应用,如 WEB 应用; 行级锁更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。

6、上述三种锁的特性可大致归纳如下:

1)表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
2)行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3)页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136872.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1951字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中