四种mysql存储引擎
Mysql两种存储引擎的区别
MySQL数据库三种常用存储引擎特性对比
数据库索引到底是什么,是怎样工作的?
数据库调优教程(五) 索引的作用和索引的种类
数据库索引类型及实现方式
Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别
MYSQL中的普通索引,主健,唯一,全文索引区别
Java研发岗位面试归类B(附答案)[数据库相关]
数据库事务的四大特性以及事务的隔离级别
对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解
共享锁(S锁)和排它锁(X锁)
数据库事务特性学习笔记
关系型数据库与非关系型数据库的区别?
数据库锁的粒度

所谓粒度,即细化的程度。锁的粒度越大,则并发性越低且开销大;锁的粒度越小,则并发性高且开销小。

锁的粒度主要有以下几种类型:

(1)行锁,行锁是粒度中最小的资源。行锁就是指事务在操作数据的过程中,锁定一行或多行的数据,其他事务不能同时处理这些行的数据。行级锁占用的数据资源最小,所以在事务的处理过程中,允许其它事务操作同一表的其他数据。

(2)页锁,一次锁定一页。25个行锁可升级为一个页锁。

(3)表锁,锁定整个表。当整个数据表被锁定后,其他事务就不能够使用此表中的其他数据。使用表锁可以使事务处理的数据量大,并且使用较少的系统资源。但是在使用表锁时,会延迟其他事务的等待时间,降低系统并发性。

(4)数据库锁,防止任何事务和用户对此数据库进行访问。可控制整个数据库的操作。

用锁效率会降低,可通过使用表锁来减少锁的使用从而保证效率。

关系型和非关系型数据库区别

作者:陈鼎星
链接:https://www.zhihu.com/question/24225007/answer/81501685
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

非关系型数据库的优势:

  1. 性能
    NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
  2. 可扩展性
    同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

关系型数据库的优势:

  1. 复杂查询
    可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
  2. 事务支持
    使得对于安全性能很高的数据访问要求得以实现。

对于这两类数据库,对方的优势就是自己的弱势,反之亦然。

但是近年来这两种数据库都在向着另外一个方向进化。例如:
NOSQL数据库慢慢开始具备SQL数据库的一些复杂查询功能的雏形,比如Couchbase的index以及MONGO的复杂查询。对于事务的支持也可以用一些系统级的原子操作来实现例如乐观锁之类的方法来曲线救国。
SQL数据库也开始慢慢进化,比如HandlerSocker技术的实现,可以在MYSQL上实现对于SQL层的穿透,用NOSQL的方式访问数据库,性能可以上可以达到甚至超越NOSQL数据库。可扩展性上例如Percona Server,可以实现无中心化的集群。 虽然这两极都因为各自的弱势而开始进化出另一极的一些特性,但是这些特性的增加也会消弱其本来具备的优势,比如Couchbase上的index的增加会逐步降低数据库的读写性能。所以怎样构建系统的短期和长期存储策略,用好他们各自的强项是架构师需要好好考虑的重要问题。