SQL进阶理论篇(一):数据库的调优

这篇具有很好参考价值的文章主要介绍了SQL进阶理论篇(一):数据库的调优。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

本节主要分为以下三方面内容:

  • 数据库调优的目标是什么?
  • 如果要进行调优,都有哪些维度可以选择?
  • 如何思考和分析数据库调优?

只是简单介绍了一些基础理论,之后有时间的话再针对性扩展吧。

数据库调优的目标

简单来说,就是让相应的时间更快,吞吐量更大。

那怎么断定我这次调优是有效的呢?

可以根据用户的反馈,或者服务器资源的使用监控、数据库内部的会话监控等。

可供选择的维度

  • 选择合适的DBMS

比如说OLTP,追求实时性,那么使用基于行存的RDBMS更好。对于OLAP,对实时性要求不高,那么出于存储的角度,可以考虑列式的DBMS。

  • 优化表设计

比如说视情况,是遵循第三范式的原则,减少冗余字段?还是采取反范式,以空间换时间,通过增加冗余字段来避免多表联查的开销。

  • 优化逻辑查询

比如说索引的应用,在字段已有索引的前提下,注意避免让索引失效。

  • 优化物理查询

比如说,如何更好的创建索引。

在数据重复度高的情况下,可以选择不创建索引,如性别这个字段。

另外,索引不是越多越好。每个索引都需要存储空间,索引多就意味着更多的存储空间。而且,过多的索引也会导致优化器在进行评估的时候增加了一项筛选出索引的时间,从而影响效率。

联合索引在声明时,字段顺序也是有很大影响的。比如我们对字段x、y和z创建联合索引,那创建的时候是按照(x,y,z)还是(z,y,x),理论上在使用的时候是会有差别的。

  • 使用Redis或者Memcached作为缓存

这个属于寻求外援的支持,来提升查询的效率。

因为数据都是存放到数据库中,我们需要从数据库层中取出数据放到内存中进行业务逻辑的操作,当用户量增大的时候,如果频繁地进行数据查询,会消耗数据库的很多资源。

如果我们将常用的数据直接放到内存中,就会大幅提升查询的效率。键值存储数据库可以帮我们解决这个问题。

常用的键值存储数据库有 Redis 和 Memcached,它们都可以将数据存放到内存中。

从可靠性来说,Redis 支持持久化,可以让我们的数据保存在硬盘上,不过这样一来性能消耗也会比较大。而 Memcached 仅仅是内存存储,不支持持久化。

另外,Redis支持的数据类型也更多。

  • 库级优化

使用主从架构优化来进行读写分离。比如用主数据库(master)来完成写操作,用从数据库(slave)完成读操作。从而降低主数据库的负载。

还可以对数据库进行分库分表。就是把一个数据库或者一个数据表切成多份,可以放到不同的数据库服务器上,减少对单一数据库服务器的访问压力。

如果你使用的是 MySQL,就可以使用 MySQL 自带的分区表功能,当然你也可以考虑自己做垂直切分和水平切分。

如果一个数据库中的数据表过多,可以采用垂直分库的方式,将表放到不同的数据库服务器上,把会发生关联的数据表都部署在同一个数据库上。

如果一个数据表中的列太多,可以采用垂直分表的方式,将一个数据表切成多张,经常在一起使用的列放在同一张表中。

如果一个数据表中的行太多,可以采用水平分表的方式,将一个数据表切分成不同的子表,每张表的表结构保持一致。比如说按年份做水平分表,2017年、2018年和2019年的数据分别放在三个不同的数据表中。文章来源地址https://www.toymoban.com/news/detail-757740.html

参考文献

  1. 20丨当我们思考数据库调优的时候,都有哪些维度可以选择?

到了这里,关于SQL进阶理论篇(一):数据库的调优的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库】MySQL 高级(进阶) SQL 语句

    location表格创建 store_info表格创建 显示表格中一个或数个字段的所有数据记录 不显示重复的数据记录 按照条件进行查询 在已知的字段数据取值范围内取值 另外还有not in命令,用法一致,表示显示不在指定范围内的字段的值。 在两个字段数据值之间取值,包含两边字段的数据

    2024年02月09日
    浏览(120)
  • MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)

    本篇博客深入详细地介绍了数据库索引的概念和重要性。内容包含:索引的概念和目标、索引的优点与缺点。此外,博客还深入解析了三种主要的索引结构:B-Tree、B+Tree和Hash,提供了详细的结构解析和优化方法,并通过插图进一步增强了理解。 博客的部分内容专注于对B-Tr

    2024年02月21日
    浏览(42)
  • 网络安全进阶学习第十二课——SQL手工注入3(Access数据库)

    判断数据库类型 —— 判断表名 —— 判断列名 —— 判断列名长度 —— 查出数据。 asp的网站,常用数据库为access、sqlserver。 and exsits (select * from msysobjects)0 access and exsits (select * from sysobjects)0 sqlserver 上述语句 会返回1或者0 。 msysobjects是access的默认数据库 , sysobjects是sqlserv

    2024年02月11日
    浏览(38)
  • 数据库基础——数据库、数据表和SQL语句

    数据库是用来存储、管理数据的仓库 数据表是数据的存储结构 Structured Query Language,结构化查询语言,用来操作数据库 安装MySQL,自行百度 进入cmd使用命令 mysql -hAddress -uUser -p(Password) 登录数据库 -p后直接回车可进入密文登录 如果出现以下报错,则打开任务管理器-服务-开启

    2024年02月09日
    浏览(56)
  • 【数据库】SQL语言基础

    SQL:结构化查询语言。使用SQL命令,给出几个用户参数,系统根据这些参数从底层数据库提取结果。这个过程是封装了的,结构化的。其主要功能概括为: 数据定义功能:create , drop, alter 对表头结构的建,删,改 数据查询:select 最主要应用的,最复杂部分 数据操纵:inser

    2024年02月04日
    浏览(25)
  • 数据库入门-----SQL基础知识

    目录 📖前言: 📑SQL概述通用语法:  🐳DDL: 🐻操作数据库: 🐞数据类型:  🦉操作表: 🦦DML: 语法规则: 案例演示: 🦏DQL: 语法规则: 案例演示: # 基础查询:  # 条件查询:  #聚合函数:  # 分组查询:  #排序查询:  #分页查询:  执行顺序: 🫎DCL: 语法规则:

    2024年04月10日
    浏览(43)
  • MySQL数据库基础(九):SQL约束

    文章目录 SQL约束 一、主键约束 二、非空约束 三、唯一约束 四、默认值约束 五、外键约束(了解) 六、总结 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。 遵循原

    2024年02月19日
    浏览(46)
  • MySQL数据库基础(五):SQL语言讲解

    文章目录 SQL语言讲解 一、SQL概述 二、SQL语句分类 1、DDL 2、DML 3、DQL 4、DCL 三、SQL基本语法 1、SQL语句可以单行或多行书写,以分号结尾 2、可使用空格和缩进来增强语句的可读性 3、MySQL数据库的SQL语句不区分大小写,建议使用大写  4、可以使用单行与多行注释 四、总

    2024年02月19日
    浏览(44)
  • SQL Server数据库 -- 表的基础查询

    一、单表查询基本结构 二、单表查询结构语法 select 聚合函数 where 模糊查询 order by group by having 三、多表查询基本结构 四、多表查询结构语法 内连接 自连接 外连接 五、总结         学习了数据库,在以后公司等地方,你可能不会用到创建数据库或者表格,但是你一定会使

    2024年02月11日
    浏览(76)
  • Oracle数据库SQL Plus基础命令

    1.使用SQL*Plus登录Oracle数据库 开始 -- 所有程序 -- Oracle -- 应用程序开发 -- SQL Plus cmd窗口下输入:sqlplus 用户名/口令@主机字符串 2.使用CMD命令登录Oracle数据库 开始 -- 所有程序 -- 附件 -- 命令提示符 使用命令行登陆的连接命令格式为:sqlplus/@net_service_name username为用户名;passw

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包