千家信息网

数据库优化中都有哪些内容

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要介绍了数据库优化中都有哪些内容的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇数据库优化中都有哪些内容文章都会有所收获,下面我们一起来看看吧。一、问题分析考官主
千家信息网最后更新 2024年11月11日数据库优化中都有哪些内容

这篇文章主要介绍了数据库优化中都有哪些内容的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇数据库优化中都有哪些内容文章都会有所收获,下面我们一起来看看吧。

  一、问题分析

  考官主要是对数据库优化方面的考核,一般数据库优化分为性能和应用方面的,如你了解 sql 优化吗;百万数据怎么优化等

  二、 核心答案讲解

  1、根据服务层面 、配置 mysql 性能优化参数;

  2、从系统层面增强 mysql 的性能 、优化数据表结构、字段类型、字段索引、分表,分库、读写分离等等。

  3、从数据库层面增强性能 、优化 SQL 语句,合理使用字段索引。

  4、从代码层面增强性能 、使用缓存和 NoSQL 数据库方式存储,如 MongoDB/Memcached/Redis 来缓解高并发下数据库查询的压力。

  5、减少数据库操作次数,尽量使用数据库访问驱动的批处理方法。

  6、不常使用的数据迁移备份,避免每次都在海量数据中去检索。

  7、提升数据库服务器硬件配置,或者搭建数据库集群。

  8、编程手段防止 SQL 注入 、使用 JDBC PreparedStatement按位插入或查询;正则表达式过滤(非法字符串过滤);

  三、问题扩展

  1Sql 优化

  1)应尽量避免在 where 子句中使用!=<>操作符,否则将引擎放弃使用索引而进行全表扫描;

  2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如 、select id from t where num is null可以在 num 上设置默认值 0,确保表中 num 列没有 null值,然后这样查询 :

  select id from t where num=0

  3)很多时候用 exists 代替 in 是一个好的选择;

  4)用 Where 子句替换 HAVING 子句 因为 HAVING 只会在检索出所有记录之后才对结果集进行过滤;

  5select count(*) from table;这样不带任何条件的count 会引起全表扫描,并且没有任何业务意义,是一定要杜绝的;

  2、索引

  1)索引概念 、对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果我们把一个表的内容认为是一本字典,那索引就相当于字典的目录

  2)索引类型 :

  Oracle:

  逻辑上 :Single column 单行索引

  Concatenated 多行索引

  Unique 唯一索引

  NonUnique 非唯一索引

  Function-based 函数索引

  Domain 域索引

  物理上:

  Partitioned 分区索引

  NonPartitioned 非分区索引

  B-tree

  Normal 正常型 B

  Rever Key 反转型 B

  Bitmap 位图索引

  MySQL索引分为普通索引、唯一索引、主键索引、组合索引、全文索引

  3)何时使用索引

  ①主键,unique 字段;

  ②和其他表做连接的字段需要加索引;

  ③在 where 里使用>,≥,=,<,≤,is nullbetween

  等字段;

  ④使用不以通配符开始的 likewhere A like 'China%'

  ⑤聚集函数 MIN()MAX()中的字段;

  ⑥order bygroup by 字段;

  4)索引何时失效

  ①组合索引未使用最左前缀,例如组合索引(AB),where B=b 不会使用索引;

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

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

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

  ⑤如果列类型是字符串,要使用引号。例如 whereA='China',否则索引失效(会进行类型转换);

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

  四、结合项目中使用

  1.常用但不经常修改的字段建索引(譬如商品表的商品名称等字段),达到检索速度增快,用户体验度增高的目的

  2.mycat 进行分库分表

  垂直拆分是基于数据库中的""进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中。例如用户表,在字段很多的情况下(例如一个大表有 100 多个字段),通过"大表拆小表",更便于开发与维护,也能避免跨页问题

  水平分表

  水平切分分为库内分表和分库分表,是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中,每个表中只包含一部分数据,从而使得单个表的数据量变小,达到分布式的效果(如订单表)

关于"数据库优化中都有哪些内容"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"数据库优化中都有哪些内容"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

索引 数据 数据库 字段 内容 分表 性能 查询 子句 层面 类型 函数 分库 多个 知识 问题 检索 组合 前缀 商品 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宝塔设置sql数据库 嵌入式软件开发打杂 苏州互联网智慧学校软件开发 网络安全是个别部门的事情对错 数据库图形化下载叫什么 网络安全你我他的内容 软件开发项目常见问题 软件开发人员岗前培训计划 清风服务器怎么让神 五金服务器管理系统 繁雨网络技术(上海)有限公司 北京互联网网络技术服务口碑推荐 网络安全宣传电视 上海赤焰网络技术 浪潮服务器光驱启动 网络安全的教育过程 网络安全法里有免于处罚 重庆中专学校招生软件开发 夏津软件开发自学课程哪个好 柳职计算机网络技术宿舍怎么样 检索网站和数据库的区别 方舟手游等级服务器 jsp数据库怎么分类 系统启动后不能连接数据库原因 淄川物料开单软件开发 高新区服务器回收多少钱 数据库的二级索引 数据库查一个列两个字段 网络安全渗透测试训练营 通信工程是计算机网络技术类
0