数据库优化是指通过对数据库系统进行适当的配置和监控,以及对数据库设计、查询和操作等方面进行优化,从而提高数据库系统的性能、可用性和可扩展性。具体来说,可以从以下几个方面入手进行数据库优化:

  1. 数据库设计优化:包括表结构设计、索引设计、分区设计、对存储引擎的优化、对存储的优化、对内存的优化等方面。例如,合理地设计表结构可以避免数据冗余和重复,提高数据访问效率;创建适当的索引可以加快数据检索速度;使用分区技术可以提高数据存储和查询效率。

  2. 查询优化:包括 SQL 语句的编写、索引的选择和使用、查询计划的优化等方面。例如,在编写 SQL 语句时应该尽量避免使用子查询和联合查询等复杂语句;在选择索引时应该根据实际需求和数据特征来进行选择;在优化查询计划时可以使用 Explain Plan 等工具来定位问题,以便进行针对性优化。

  3. 数据库参数优化:包括缓存大小、线程池大小、日志设置等方面。例如,调整缓存大小可以提高数据访问效率;调整线程池大小可以避免线程阻塞和资源浪费;设置正确的日志级别可以降低系统负载和存储压力。

  4. 数据库监控和调优:包括性能指标的收集、阈值的设置、故障排查等方面。例如,使用监控工具可以实时监测数据库系统的运行状态;设置合理的性能指标可以及时发现和解决问题;进行故障排查时应该使用科学的方法和工具,避免盲目调整或者误操作。

  5. 代码优化:包括应用程序的设计和编码等方面。例如,在应用程序中应该尽量避免频繁访问数据库,合理地使用缓存和批处理技术可以提高数据访问效率;合理使用事务可以确保数据一致性和可靠性;避免使用过于复杂的算法和逻辑可以降低系统负载和卡顿。

需要注意的是,数据库优化是一个持续不断的过程,需要根据实际需求和环境变化来进行调整和改进。在优化数据库时,应该充分了解和掌握相关的知识和技术,同时也需要结合实践经验和业务需求来进行优化。

*下面针对查询优化具体有:

(1)基本写法的优化:

  1. 少使用select * ,尽量用具体的字段。
  2. 对条件来说等号之类两边的字段类型要相同,字符串不加引号索引会失效。
  3. 尽量少使用order by 对于多个字段需要排序可使用组合索引。
  4. 对于group by 需要先过滤后分组。
  5. 在查询时减少使用null,对字段有多个null可设默认值。
  6. 少使用like%,需要使用like时尽量将%放在字段的之后。
  7. where 后面少使用函数或者算法运算。
  8. 去重的distinct j尽量少使用distinct * ,可选择几个关键字段。
  9. 不要五张以上的表联查。

(2)替换优化:

1.不要使用not in 和<> ,这样会破坏索引,可以使用 not exists 代替 not in ,<> 可以分为两个条件< 或 >.

2.使用连接join 代替子查询。

(3)建立使用合适索引:

1.对于高频筛选字段可以适当的建立索引。

2.一个表的索引最好不好超过五个,多了会影响插入和修改。

3.使用组合索引时要遵守最左原则。

Java面试题——数据库的优化相关推荐

  1. 【Java面试题】SQL优化|Java面试题

    点击免费获取最新BATJ面试题,2020最新面试技巧和简历模板! 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语 ...

  2. Java面试题Tomcat的优化经验

    Tomcat作为Web服务器,它的处理性能直接关系到用户体验,下面是几种常见的优化措施: 一.掉对web.xml的监视,把jsp提前编辑成Servlet.有富余物理内存的情况,加大tomcat使用的j ...

  3. Java面试题阶段汇总

    希望能够坚持不断的整理,做最全的Java面试题题库,帮助更多的人在面试过程中发挥出自己的实力.也希望自己能够持之以恒的做一件事情不忘初心,加油! 初级面试题 Java面试题-基础篇一 Java面试题- ...

  4. SQL优化|Java面试题

    看到一篇非常全面的SQL优化文章,在开发的工作中往往不考虑性能上的缺失(在一开始的时候数据量不大也看不出速度上的区别).但写的越多越应该规范一下写法. 原文链接:http://www.jfox.inf ...

  5. 从零开始java数据库SQL优化(二):多个LEFT JOIN的SQL优化

    一:场景 我代码里需要在用户登录时将所有用户相关的用户,角色,部门,岗位,权限(其中权限放在菜单中,每2张表有一张关联表),不多说直接上SQL SELECT a.fk_user_id AS " ...

  6. Java的Mysql数据库的面试题

    数据库部分 1.用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息. employee: eid,ename,salary,deptid; select * from employee or ...

  7. 数据库-面试题-MySQL数据库的优化方法

    数据库-面试题-MySQL数据库的优化方法 2017年08月22日 17:56:57 小笛子的专栏 阅读数 13236 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来, ...

  8. 高薪程序员面试题精讲系列101之如何对数据库进行优化(下)?

    一. 面试题及剖析 1. 今日面试题 如何对数据库进行优化? 说说你是怎么进行数据库优化的? 2. 题目剖析 壹哥在前2篇文章中给大家讲了数据库优化的上部分和中间部分的内容,今天这篇文章我会继续讲解数 ...

  9. Java面试题之:数据库锁

    Java面试题之:数据库锁 一.行级锁 二.表级锁 三.页级锁 一.行级锁   行级锁是一种排他锁,防止其他事务修改此行:在使用以下语句时,Oracle 会自动应用行级锁: INSERT.UPDATE ...

最新文章

  1. shell定时执行hive脚本文件
  2. UA OPTI512R 傅立叶光学导论15 2-D Fourier变换与Hankel变换
  3. VTK:图片之ImageLuminance
  4. Oracle 临时表解决ORA-22992问题
  5. js中call和apply的作用和用法
  6. JSP→Javabean简介设计原则、JSP动作、Javabean三个动作、Javabean四个作用域范围、Model1简介弊端、JSP状态管理、include动作指令、forword动作、param
  7. SetZOrder 无效
  8. document.readyState 属性
  9. [BZOJ5006][LOJ#2290][THUWC2017]随机二分图(概率+状压DP)
  10. android 对话框大全,Android 对话框(Dialog)大全
  11. 万维考试系统题库答案python_万维题库与试卷管理系统
  12. MPG(MPEG2 Program Stream)格式解析
  13. 差速齿轮原理_浅析限滑差速器的功用及工作原理
  14. 互联网产品经理必备的工具
  15. cad职称计算机考试常用命令,职称计算机cad2004常用命令
  16. Linux下执行.sh命令出现-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory 问题解决
  17. 【深入浅出 Node + React 的微服务项目】1.微服务的基本知识
  18. 银行取款--Python学习小实例
  19. Excel | App_WorkbookActive中存在错误不能设置类 Addin 的Installed属性
  20. 手把手教你怎么使用各种脚本

热门文章

  1. 对于tcp的一点点解读,不止是三次握手、四次挥手
  2. linux压缩文件和命令
  3. 值得关注的IT技术博客
  4. Unity3d:The requested item has been unloaded
  5. Android Studio报错Could not find any version that matches com.android.support:appcompat-v7:33.+.
  6. 在Ubuntu中出现权限不够和找不到文件的解决方法
  7. 面相对象模型(OOM)——用例图(The Use Case Diagram)
  8. Cosmos IBC
  9. Excel数据透视表的使用
  10. Java等额本息实现