IT专家网

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网

在面试中,有哪些关于数据库的问题?

作者:51CTO出处:论坛2018-10-25 16:02

  今天,要为大家带来关于面试中,常见数据库问题的相关知识。希望这些知识能够帮助到有所需要的人。

  一、MySQL支持的分区类型有哪些?

  1、RANGE分区: 这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区

  2、LIST分区: 这种模式允许系统通过预定义的列表的值来对数据进行分割。按照List中的值分区,与RANGE的区别是,range分区的区间范围值是连续的。

  3、HASH分区 :这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。

  4、KEY分区 :上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

  二、四种隔离级别

  1、Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

  2、Repeatable read (可重复读):可避免脏读、不可重复读的发生。

  3、Read committed (读已提交):可避免脏读的发生。

  4、Read uncommitted (读未提交):最低级别,任何情况都无法保证。

  三、关于MVVC

  MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的好处:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能,现阶段几乎所有的RDBMS,都支持了MVCC。

  1、LBCC:Lock-Based Concurrency Control,基于锁的并发控制。

  2、MVCC:Multi-Version Concurrency Control,基于多版本的并发控制协议。纯粹基于锁的并发机制并发量低,MVCC是在基于锁的并发控制上的改进,主要是在读操作上提高了并发量。

  四、在MVCC并发控制中,读操作可以分成两类:

  1、快照读 (snapshot read):读取的是记录的可见版本 (有可能是历史版本),不用加锁(共享读锁s锁也不加,所以不会阻塞其他事务的写)。

  2、当前读 (current read):读取的是记录的最新版本,并且,当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录。

  五、行级锁定的优点:

  1、当在许多线程中访问不同的行时只存在少量锁定冲突。

  2、回滚时只有少量的更改

  3、可以长时间锁定单一的行。

  六、行级锁定的缺点:

  1、比页级或表级锁定占用更多的内存。

  2、当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。

  3、如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。

  4、用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。

  七、MySQL优化

  1、开启查询缓存,优化查询

  2、explain你的select查询,这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的

  3、当只要一行数据时使用limit 1,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据

  4、为搜索字段建索引

  5、使用 ENUM 而不是 VARCHAR,如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是VARCHAR。

  6、Prepared StatementsPrepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用 prepared statements 获得很多好处,无论是性能问题还是安全问题。Prepared Statements 可以检查一些你绑定好的变量,这样可以保护你的程序不会受到“SQL注入式”攻击

  7、垂直分表

  8、选择正确的存储引擎

  八、key和index的区别

  1、key 是数据库的物理结构,它包含两层意义和作用,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等

  2、index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等。

  这些问题你都会吗?只有了解了基础知识,才能让你在数据库发展的更好。

相关文章

关键词:数据库,数据库问题

责任编辑:林音子

专题推荐

原创文章

微博互动

白皮书

网警备案