1..尽量避免大事务操作,提高系统并发能力。

2.大事务

1.定义:运行时间比较长,操作的数据比较多的事务

2.大事务风险:

a)锁定太多的数据,造成大量的阻塞和锁超时,回滚所需要的时间比较长。

b)执行时间长,容易造成主从延迟

3.如何处理大事务

a)避免一次处理太多大数据

b)移出不必要在事务中的select操作

3.什么是主从复制?(引入主从复制数据会有延迟)

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。

4.主从复制的作用?

1:做数据的热备,作为后备数据库,主数据库服务器故障后,可切换从数据库继续工作,避免数据丢失。

2:架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘访问的频率,提高单个机器的性能。

3:读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

4.主从复制的原理:

1.数据库有个bin-log二进制文件,记录了所有sql语句。

2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。

3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。

5.什么是读写分离(写主,读从)

读写分离就是主从集群,一主多从,或者一主一从,就是根据数据库主机复制写入操作,从机负责读的操作,主机写入以后在同步给从机。基本原理就是将数据库的读写操作分配到不同的节点,根据主从复制集群的特性进行扩展开发。

6.从代码层了解实现的思路?

明确一点,那就是读的时候用从库,写的时候用主库,这一点是重中之重,这就是需求,根据这个需求去演化我们的代码,无非就是用两个或者多个数据源DataScoure,一个主的数据源DataScoure,另外一个是一个或者多个从的数据源DataScoure。

1,通过两份ORM去操作;

2,采用AOP的方式去实现

7.读写分离带来的问题以及我们自己的思考?(会引入程序的复杂性)

读写分离以后,我们数据库同步数据的时候,会存在延迟的问题,这个延迟是数据量的增加延迟也会越来越久,但是有些业务是要求实时,我们该如何去处理这个问题。

举个例子,就按照登录来说,假设在某个网站上注册一个账号,该网站注册这个业务采用的是读写分离的设计,这个时候我们在注册完成后,需要立即登录,这个时候登录不上,因为这个时候做登录的时候访问不到该注册信息,就会提示用户不存在,延迟在2-3之间。

处理方式:如果业务没有要求必须实时,一般提倡忽略这种问题,避免带来程序的复杂性,如果提了可以从两个方面来处理。

后端读取方面 || 用户体验感方面

1,数据库层面:数据库层面可以采用暴力读取也就是一次读取主机的方法,什么是读取主机,比如说我们的登录操作,如果从从库读取不到,我们再次读取主机看该数据是否存在,这样主机压力很大,可能导致主机崩溃,因为库里有海量数据的用户,就会增加频繁的DB读写。

2,从界面层面:还是以登录为例,我们在很多网站注册完成后,会出现这样的情况,比如等待几秒跳转或者阅读下什么规则,这个时候我们考虑下为什么他要这么做,当然一部分可能是真的规定,但有时候等待几秒的跳转的动画,这个时候主从已经完成了同步。

注*:读写分离不是银弹,并不是一有性能问题就上读写分离,而是应该先优化,例如优化慢查询,调整不合理的业务逻辑,引入缓存查询等只有确定系统没有优化空间后才考虑读写分离集群!(数据库的架构方面--先是主从复制 → 读写分离(写从读主) → 分库分表(对读的一方进行分表策略)在这些基础上一路慢慢的建立扩展起来)

8.数据库索引失效的场景;

1,like未使用最左前缀,where A like '%China';

2,搜索一个索引而在另一个索引上做order by,where A=a order by B,只使用A上的索引,因为查询只使用一个索引

3,or会使索引失效。如果查询字段相同,也可以使用索引。例如where A=a1 or A=a2(生效),where A=a or B=b(失效)。

4,在索引列上的操作,函数(upper()等)、or、!=(<>)、not in等

5,对索引列进行运算导致索引失效,我所指的对索引进行运算包括

6,不要将空的变量值直接与比较运算符(符号)比较。

7, delete

数据库面试题及优化手段相关推荐

  1. 混合索引_数据库面试题:查询在什么情况下不?索引-数据库知识点

    查询在什么情况下不⾛索引 数据库面试题 ⾸先,我们可以说通过explain去排查⼀个慢查询,进⽽找到它的索引(参看第五题),当创建索引却不⾛索引时,我们就需要考虑到优化器的问题. 在⼀条单表查询语句真 ...

  2. datagrid如何获取一行数据中的某个字段值_或许是全网最全面关于数据库面试题...

    原文: https://www.enmotech.com/web/detail/1/794/1.html 两万字全面论述数据库面试题(上) https://www.enmotech.com/web/d ...

  3. 计网/数据库面试题(更新中ing~~)

    计网/数据库面试题(更新中ing~~) <计算机网络> 1. OSI七层模型.设备 (传输层)协议的多路分用和复用 2. TCP/IP四层模型==五层模型 (传输层)TCP和UDP协议对比 ...

  4. C# 联合查询_直击数据库面试题:数据库查询语句

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  5. MySQL数据库面试题(2021最新版)

    文章目录:http://github.crmeb.net/u/defu 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 ...

  6. Oracle数据库面试题 精选 Oracle 面试题

    Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...

  7. SQL编程软件测试,编程程题库之软件测试8大常见数据库面试题

    原标题:编程程题库之软件测试8大常见数据库面试题 一.事务的四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前其它会话不能看到过程一致性,事务前后,数据总额一致持久性,一旦事务提交 ...

  8. mysql纵表 主键_数据库面试题-sql语句

    原标题:数据库面试题-sql语句 1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的. 答: → 解1: select top ...

  9. 复试面试-数据库面试题

    将网上常见的数据库面试题整理一下,方便自己和有需要的人学习. 1.事务 概念:访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位.事务由事务开 ...

  10. 2020字节跳动数据库面试题及答案(二)—— NoSQL部分

    本文答案整理为原创,转载请说明出处 文章目录 redis 的底层数据结构有哪些 redis 中的 SDS 和 C 语言中的字符串有什么区别,优点是什么 redis 中的字典是如何实现的,如何解决冲突和 ...

最新文章

  1. 数据结构(三) 用java实现七种排序算法。
  2. 算法开发人员的安身之本:如何将机器学习与各行各业进行深度结合
  3. GitHub 的项目徽章
  4. 中国顶级 AI 研究者数量仅为美国 1/5:美国智库最新全球 AI 实力报告
  5. Windows10下git bash中添加wget下载工具
  6. 如何学习linux编程(转载)
  7. 想写Python爬虫?看这5个教程就行了!
  8. Linux操作系统的性能将主要取决于,大学计算机基础试题题库及复习资料
  9. 使用Python+turtle绘制同心圆
  10. python终止线程_Python里怎么终止一个线程
  11. windows mysql5.7 忘记root密码
  12. linux根据端口号查询项目路径
  13. 如何写好一份专利交底书?
  14. jQuery操作input值总结
  15. qq刷屏代码可复制_QQ小程序「神奇字体」从注册到发布
  16. 使用pytorch实现crnn
  17. 打开UG8.0出现启动界闪一下就没有任何反应了怎么回事?
  18. 使用idea中JD-Intellij插件反编译
  19. 关于港股通交易的规则
  20. Intellij IDEA误删文件恢复

热门文章

  1. 【数据资产】数据资产目录建设方法与案例
  2. 使用PopWindow时距离边界有间隙的解决办法
  3. HTML5,不只是看上去很美(可交互地铁线路图)
  4. JS页面跳转页面大全
  5. java姓名转拼音加处理多音字
  6. express-urlrewrite express url重写
  7. 离散数学第六版第er章偶数题答案_离散数学 第2章习题答案
  8. windows64位首次安装git
  9. android 查看cad方案,安卓手机可以CAD看图吗?怎么查看接收的CAD图纸文件?
  10. 【最优化】最优化理论的基本概念