文章目录
Mysql面试题
即可获取。第一范式
:每个列都不可以再拆分。第二范式
:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式
:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。user权限表
:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。db权限表
:记录各个帐号在各个数据库上的操作权限。table_priv权限表
:记录数据表级的操作权限。columns_priv权限表
:记录数据列级的操作权限。host权限表
:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。主键索引
: 数据列不允许重复,不允许为NULL,一个表只能有一个主键。唯一索引
: 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。ALTER TABLE table_name ADD UNIQUE (column);
创建唯一索引ALTER TABLE table_name ADD UNIQUE (column1,column2);
创建唯一组合索引普通索引
: 基本的索引类型,没有唯一性的限制,允许为NULL值。ALTER TABLE table_name ADD INDEX index_name (column);
创建普通索引ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);
创建组合索引。全文索引
: 是目前搜索引擎使用的一种关键技术。ALTER TABLE table_name ADD FULLTEXT (column);
创建全文索引1. B树索引
2. B+tree性质
3. 哈希索引
1. BTree算法
2. Hash算法
原子性
: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性
: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性
: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性
: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。脏读
(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。不可重复读
(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。幻读
(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。READ-UNCOMMITTED
(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED
(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。REPEATABLE-READ
(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。SERIALIZABLE
(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。行级锁
:行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁 和 排他锁。特点:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。表级锁
: 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。特点:开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。页级锁
:页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。悲观锁
:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。在查询完数据的时候就把事务锁起来,直到提交事务。实现方式:使用数据库中的锁机制乐观锁
:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。在修改数据的时候把事务锁起来,通过version的方式来进行锁定。实现方式:乐一般会使用版本号机制或CAS算法实现。Mysql面试题
即可获取。