数据库优化策略(草稿)

数据库查询性能优化策略

优化查询

使用Explain语句分析查询语句

Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。

通过对查询语句的分析,可以了解查询语句的执行情况,找出查询语句执行的瓶颈,从而优化查询语句.

使用索引查询

MySql中提高性能的一个最有效的方式就是对数据表设计合理的索引.

索引提供了高效访问数据的方法,并且加快查询速度.

如果查询时没有使用索引,那么查询语句将扫描表中所有的记录.在数据量大的时候,这样查询速度会很慢.

使用索引进行查询,查询语句可以根据索引快速定位到待查询记录,从而减少查询记录数,达到提高查询速度的目的.

几种特殊情况(使用带索引的字段查询时,索引不起作用)

  • 使用Like关键字,如果匹配字符串的第一个字符为"%",索引不会起作用,如果第一个关键字不是 "%",那么索引会起作用.
  • MySQL可以为多个字段创建索引,一个索引可以包括16个字段,只有查询条件中使用这些字段中的第一个字段时,索引才会被使用.
  • 查询关键字只有 OR ,且OR左右两边的列都是索引时,索引才起作用.

优化子查询

子查询虽然可以使查询语句更灵活,但执行效率不高.因为MySQL需要为内层查询语句的查询结果建立一个临时表.

可以使用连接查询代替子查询,连接查询不需要建立临时表,其速度比子查询要快.

优化数据访问

1.减少请求的数据量

  • 只返回必要的列,最好不要用 select * 这种语法;
  • 只返回必要的行,使用limit语句限制获取数据的条数;
  • 缓存重复查询的数据: 使用缓存可以避免在数据库中查询,特别是在数据被经常反复查询时,缓存带来的查询性能的提升,将会是非常明显的.

2.减少服务器端扫描的行数

最有效的方法是: 使用索引来覆盖查询;


重构查询方式

1.切分大查询

一个大查询如果一次性执行的话,可能一次锁住很多数据,占满整个事务日志,耗尽系统资源,阻塞很多小的但重要的查询.

2.分解大连接查询

将一个大连接查询分解成对每一个表进行一次单表查询,然后在应用程序中进行关联.

这样做的好处有:

  • 让缓存更高效. 对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用了.而分解后的多个查询,即使其中一个表的查询发生变化,那么对于其他表的查询缓存依然可以使用.
  • 分解成单表查询,这些单表查询的缓存结果更可能被其他查询使用到,从而减少冗余记录的查询.
  • 减少锁竞争.
  • 在应用层进行连接,可以更容易的对数据库进行拆分,从而更容易做到高性能和可伸缩.

优化数据库结构

1.将字段很多的表分解成多个表

对于字段较多的表,如果有些字段的使用频率很低,可将这些字段分离出来形成了新表.

当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢.

2.增加中间表

对于经常需要联合查询的表,可以建立中间表以提高查询效率.

3.优化插入记录的速度

插入记录时,影响插入速度的主要是索引,唯一性校验,一次插入记录条数等.根据这些情况可以分别进行优化.

优化MySQL服务器

1.优化服务器硬件

针对性能瓶颈,提高硬件配置,可以提高数据库的查询和更新速度.

  • 配置较大的内存.
  • 配置高速磁盘系统,以减少读盘的等待时间.
  • 合理分配磁盘IO.
  • 配置多处理器,MySQL是多线程的数据库,多处理器可同时执行多个线程.

2.优化MySQL参数

优化MySQL参数可以提高资源利用率,从而提高服务器性能.

原文地址:https://www.cnblogs.com/CherishTheYouth/p/CherishTheYouth_20190921.html

时间: 2024-10-10 21:46:53

数据库优化策略(草稿)的相关文章

数据库性能优化策略

有数据表明:用户可以承受的最大等待时间为8秒. 之前曾见过某个产品的一个列表页,40秒左右才能加载出来,几乎没有进行任何优化措施. 没有索引,没有缓存机制,没有进行sql优化(sql语句很长,并且各种left join表关联). 数据库优化策略有很多,设计初期,建立好的数据结构对于后期性能优化至关重要.因为数据库结构是系统的基石,基础打不好,使用各种优化策略,也不能达到很完美的效果. 一:规范化与反规范化 大家都听说过:数据库设计三大范式. 1.第一范式(确保每列保持原子性) 第一范式是最基本的

MySQL数据库存储引擎与数据库优化

存储引擎 (1)MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就成为存储引擎. 每种存数引擎使用不同的存储机制.索引技巧.锁定水平,最终提供广泛且不同的功能. (2)使用不同的存储引擎也可以说不同类型的表 (3)MySQL支持的存储引擎 MyISAM InnoDB Memory CSV Archive 查看数据表的创建语句: SHOW CREATE TABLE 表名 相关概念: (1).并发控制:一个人读数据,另外一个人在删除这个数据. 当多个连接对记录进行修改时保证数据的一致性

中国移动MySQL数据库优化最佳实践

原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA 开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则需要从数据

数据库优化方法整理

数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争. 在基于表驱动的信息管理系统(MIS)中,基本表的设计规范是第三范式(3NF). 第三范式的基本特征是非主键属性只依赖于主键属性. 基于第三范式的数据库表设计具有很多优点: 一是消除了冗余数据,节省了磁盘存储空间: 二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护, 也容易移植和更新: 三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏.也不重复: 四是因消除

数据库优化基础

一.主题 大数据下,如何优化数据库才能使系统的性能有较好的提升. 改善数据库的结构有两种: 一种是采用存储过程代替普通的SQL语句或者优化低效率的SQL语句 另外一种就是使用数据库系统中增强索引和规划分区表进行优化 二.阅读结构 |-数据库优化 |-数据库分库分表 |-垂直切分 |-水平切分 |-数据库分区 |-垂直分区 |-水平分区 |-读写分离 |-主主 |-主从 三.数据库分库分表 1.什么是分库分表? 把原本存储于一个库的数据分块存储到多个库上 把原本存储于一个表的数据分块存储到多个表上

数据库优化小技巧总结

对于数据库优化: 数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争基于第三范式的数据库表设计具有很多优点:一是消除了冗余数据,节省了磁盘存储空间:二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护,也容易移植和更新:三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏.也不重复:四是因消除了冗余数据(冗余列),在查询(Select)时每个数据页存的数据行就多,这样就有效地减少了逻辑I/O,五是对大多数事务(Tra

数据库优化方法

常见的数据库优化方法:索引(数据库),缓存,分表,分库,sql优化. 索引:创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略.95% 的数据库能问题都可以采用索引技术得到解决.索引有助于提高检索性能,但过多或不当的索引也会导致系统低效.因为用户在表中每加进一个索引,数据库就要做更多的工作.过多的索引甚至会导致索引碎片. 缓存:hibernate,spring3有缓存模块 分表:针对每个时间周期产生大量的数据,可以考虑采用一定的策略将数据存到多个数据表中. 分库:就是将

常见性能优化策略的总结

本文是一位美团老师把之前所做的各种性能优化的案例和方案加以提炼.总结,以文档的形式沉淀下来,并在内部进行分享.力求达到如下效果: 形成可实践.可借鉴.可参考的各种性能优化的方案以及选型考虑点,同时配合具体的真实案例,其他人遇到相似问题时,不用从零开始: 有助于开阔视野,除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识.思维以及做各种权衡的能力: 常见性能优化策略分类: 代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视.很多技术人员拿到

常见性能优化策略的总结(转)

add by zhj: 我个人感觉性能优化分析影响性能的因素有哪些,然后按影响力的大小进行排序,然后进行排序. 然后进一步分析每个因素为何会影响性能,把这些因素再找出来,再按影响力大小进行排序.基本上,经过 这两层的分析,基本就够用了.对这些因素思考解决办法. 1. 数据库层 我们的目标是减少IO访问,或者将IO访问进行负载均衡,分配到多台服务器,并行计算. 1.1 数据库的数据存储在硬盘,硬盘访问速度比内存慢太多,即IO多 1.2 数据量大导致扫描记录多,间接导致IO多 1.3 所有数据库访问