数据库面试题

有没有做过数库优化方面的事情?
1.查找.定位慢查询,并优化
2.创建索引:创建合适的索引,我们就可以先在索引中查询,查询到以后直接找对应的记录
3.分表:当一张表的数据比较多或者一张表的某些字段的值比较多并且很少使用时,采用水平分表和垂直分表来优化
4.读写分离:当一台服务器不能满足需求时,采 用读写分离方式进行集群
5.缓存:使用redis来进行缓存

如何定位,查找慢查询?
1.如何定位并优化慢查询sql
   a.根据慢日志定位慢查询sql
      SHOW VARIABLES LIKE ‘%query%’ 查询慢日志相关信息
      slow_query_log 默认是off关闭的,使用时,需要改为on 打开      
      slow_query_log_file 记录的是慢日志的记录文件
      long_query_time 默认是10S,每次执行的sql达到这个时长,就会被记录
      SHOW STATUS LIKE ‘%slow_queries%’ 查看慢查询状态
      Slow_queries 记录的是慢查询数量 当有一条sql执行一次比较慢时,这个vlue就是1 (记录的是本次会话的慢sql条数)
      注意:
      如何打开慢查询 : SET GLOBAL slow_query_log = ON;
      将默认时间改为1S: SET GLOBAL long_query_time = 1;
      (设置完需要重新连接数据库,PS:仅在这里改的话,当再次重启数据库服务时,所有设置又会自动恢复成默认值,永久改变需去my.ini中改)
   b.使用explain等工具分析sql
 数据库的三大范式
表的范式:首先符合1NF,才能满足2NF,进一步满足3NF
1NF:即表的列具有原子性,不可在分解
2NF:表中的记录是唯一的,通常我们设计一个主键来实现
3NF:即表中不要有沉鱼的数据

如何选择合适的存储引擎:
在开发中,我们经常使用的存储引擎myisam/innodb/merrory
MYISAM:
对事物的要求不高,同时以查询和添加为主,我们可以使用myisam存储引擎,比如bbs中的发表帖, 回复表
INNODB;
对事物的要求高,保存的数据都是重要的数据,我们建议使用INNODB,比如订单表,账号表
MEMORY:
我们数据变化频繁,不需要入库,需要频繁的修改和查询,我们考虑使用memory速度极快。不支持事物,不支持主键

数据库优化分表:
分表分为水平分表以及垂直分表.
1.根据经验,mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉,水平分表能够很大程度减少这些压力
按行 进行数据分表
2.如果一张表中某个字段值非常多(长文本,二进制),而且只有在很少的情况下回查询,这时候就可以把字段多个单独放到一张表中,通过外键关联起来

3.水平分表策略:
1。按时间分表
这种分表方式有一定的局限性。当数据有较强的实效性,如微博发送记录,微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表
2。按区间范围分表
一般在严格的自增id需求上,如按照user_id水平分表;
3.hash分表:
通过一个原始目标的ID或者名称通过一定的hash算法算出数据存储表的表名,然后访问相应的表。
数据库的读写分离
1。主从同步
数据库最终会把数据持久化到磁盘,如果集群必须确保每个数据库服务器的数据是一直的,他改变数据库数据的操作都往主数据库去写,而其他的数据库从主数据库上同步数据
2。读写分离
使用负载均衡来实现读写的操作都往主数据去,,而读的操作往从服务器去。
数据库优化缓存
在持久化(dao)和数据库(db)之间添加一个缓存层,如果用户访问的数据已经缓存起来时,在用户访问时直接从缓存中获取,不用访问数据库,而缓存是在操作内存级,访问速度快
作用:
减少数据库服务器压力,减少访问时间
java中支持分布式的缓存有:redis,memcath

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值