专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 比较难掌握的几道数据库面试题及答案

比较难掌握的几道数据库面试题及答案

更新时间:2023-01-14 15:55:36 来源:星辉 浏览935次

1.行级锁定的缺点:

比页级或表级锁定占用更多的内存。当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。

2.MySQL优化

  • 开启查询缓存,优化查询
  • explain你的select查询, 这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN的查询结果还会告诉你你的索引 主键被如何利用的,你的数据表是如何被搜索和排序的
  • 当只要一行数据时使用limit 1, MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据
  • 为搜索字段建索引
  • 使用ENUM而不是VARCHAR
  • Prepared StatementsPrepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用

prepared statements获得很多好处,无论是性能问题还是安全问题。

Prepared Statements可以检查一些你绑定好的变量,这样可以保护你的程序不会受到“SQL注入式” 攻击

  • 垂直分表
  • 选择正确的存储引擎

3.key和index的区别

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

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

4.Mysql 中MyISAM和InnoDB的区别有哪些?

  1. InnoDB支持事务, MyISAM不支持
  2. InnoDB支持外键,而MylSAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
  3. InnoDB是聚集索引,数据文件是和索引绑在一起,必须要有主键,通过主键索引效率高。
  4. InnoDB不保存 表的具体行数,执行select count(*) from table时需要全表扫描。
  5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

5.数据库表创建注意事项

1、字段名及字段配制合理性

  • 剔除关系不密切的字段; 1字段命名要有规则及相对应的含义(不要一部分英文,一部分拼音,还有类似a.b.c这样不明含义的字段) ;
  • 字段命名尽量不要使用缩写(大多数缩写都不能明确字段含义) ;
  • 字段不要大小写混用(想要具有可读性,多个英文单词可使用下划线形式连接) ;
  • 字段名 不要使用保留字或者关键字;
  • 保持字段名和类型的一致性;
  • 慎重选择数字类型; 给文本字段留足余量;

2、系统特殊字段处理及建成后建议

  • 添加删除标记(例如操作人、删除时间) ;
  • 建立版本机制;

3、表结构合理性配置

  • 多型字段的处理 ,就是表中是否存在字段能够分解成更小独立的几部分(例如:人可以分为男人和女人) ;
  • 多值字段的处理,可以将表分为三张表,这样使得检索和排序更加有调理,且保证数据的完整性!

4、其它建议

  • 对于大数据字段,独立表进行存储,以便影响性能(例如:简介字段) ;
  • 使用varchar类 型代替char,因为varchar 会动态分配长度,char指定长度是固定的; 给表创建主键,对于没有主键的表,在查询和索引定义上有一定的影响;
  • 避免表字段运行为null,建议设置默认值(例如: int类型设置默认值为0) 在索引查询上,效率立显; 1建立索引,最好建立在唯-和非空的字段上,建立太多的索引对后期插入、更新都存在一定的影响(考虑实际情况来创建) ;

以上就是“比较难掌握的几道数据库面试题及答案”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注星辉Java官网。 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>