JAVA面试笔试之-关系型数据库

1.MySQL 索引使用的注意事项
      索引是数据结构,, 索引的优势:检索查询会,排序快; 劣势:写操作会变慢,索引占磁盘空间
     什么情况下适合创建索引: 频繁查询的字段,或者多表关联的字段建立索引,排序分组操作的字段, 会提高查询
     不适合建索引: 表数据少,经常增删改的, where 条件不需要用到的字段,过滤性不好的字段, 不要建索引,

     
2.DDL、DML、DCL分别指什么

      DDL -数据库定义语言: 在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。

     DML -数据操作语言: 也就是平时我们对数据进行增删改查,主要用来对数据库的数据进行一些操作。

     DCL-数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。比如Commint , rollback ,SET TRANSACTION (设置事物) 等,较少用到

3.explain命令

    数据库性能分析Explain命令,执行 Explain select * from emp where empno = 3333\G  语句

    这里写图片描述

 对于返回的信息,我们主要关心一下几个 
1) Type                 》 ALL全表扫描,通常是不好的,其他的如index、range、const、ref、system则是较好的 
2) Possible_keys 》可能被用到的索引 
3) Key                  》查询过程中实际使用的索引,当为null时表示没有使用索引,通常是不好的 
4) key_len            》索引字段最大可能使用的长度,也叫索引基数。索引基数越大,表明可能查找的行数越多,查询效率越慢。 
5) Rows               》 MySQL 估计的需要扫描的行数。只是一个估计。越多表明查找的行数越多,自然越慢。 
6) Extra               》显示上述信息之外的其它信息,非常重要。其主要有一下返回结果。 

4.left join,right join,inner join
    比如A 和B两个表  select  A表 去left join B  条件是 on A.id=B.id A全显示 B 只显示等于A.id 的数据,不足的会是NULL ; 
    right join 相反;
    inner join 只显示a.id= b.id 的共有数据

    
5.数据库事物ACID(原子性、一致性、隔离性、持久性)

6.事物的隔离级别(读未提交、读以提交、可重复读、可序列化读)

7.脏读、幻读、不可重复读

8.数据库的几大范式

9.数据库常见的命令

10.说说分库与分表设计

11.分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表,全局表?)

12.说说 SQL 优化之道

13.MySQL遇到的死锁问题、如何排查与解决

14.存储引擎的 InnoDB与MyISAM区别,优缺点,使用场景

15.MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理);
  
16.MyISM:如果执行大量的SELECT,MyISAM是更好的选择
  
17.InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表
  
18.索引类别(B+树索引、全文索引、哈希索引)、索引的原理

19.什么是自适应哈希索引(AHI)

20.为什么要用 B+tree作为MySQL索引的数据结构

21.聚集索引与非聚集索引的区别

22.遇到过索引失效的情况没,什么时候可能会出现,如何解决
  
23.limit 20000 加载很慢怎么解决

24.如何选择合适的分布式主键方案

25.选择合适的数据存储方案

26.常见的几种分布式ID的设计方案

27.常见的数据库优化方案,在你的项目中数据库如何进行优化的
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章