当前位置: 首页 > news >正文

8.1 优化概述

数据库性能取决于数据库级别的几个因素,例如表、查询和配置设置。这些软件结构导致了硬件级别的 CPU 和 I/O 操作,您必须将其最小化并尽可能提高效率。在研究数据库性能时,首先要学习软件端的高级规则和准则,然后使用墙上的时钟时间来测量性能。当您成为专家时,您将了解更多关于内部发生的事情,并开始衡量 CPU 周期和 I/O 操作等事情。

典型用户的目标是从现有的软件和硬件配置中获得最佳的数据库性能。高级用户寻找机会来改进 MySQL 软件本身,或者开发自己的存储引擎和硬件设备来扩展 MySQL 生态系统。

  • 在数据库级别进行优化
  • 在硬件级别进行优化
  • 平衡可移植性和性能

在数据库级别进行优化

使数据库应用程序快速运行的最重要因素是其基本设计:

  • 表的结构是否正确?特别是,列是否具有正确的数据类型,每个表是否具有适合工作类型的列?例如,执行频繁更新的应用程序通常有很多表,但列很少,而分析大量数据的应用程序往往只有很少的表,且列很多。

  • 是否有适当的 索引 来提高查询效率?

  • 您是否为每个表使用了适当的存储引擎,并利用了所使用的每个存储引擎的优势和功能?特别是,选择事务存储引擎(如 InnoDB ) 或非事务存储引擎,如 MyISAM , 对于性能和可扩展性非常重要。

    注意
    InnoDB 是新表默认的存储引擎。在实践中,高级的 InnoDB 性能特性意味着 InnoDB 表通常优于简单的 MyISAM 表,尤其是在繁忙的数据库中。

  • 每张表是否使用了适当的行格式?选择结果还依赖于为表所选的存储引擎。特别是,压缩表使用更少的磁盘空间,因此需要更少的磁盘 IO 来读写数据。压缩表适用于 InnoDB 表和只读 MyISAM 表的各种工作负载。

  • 应用程序是否使用适当的 锁定策略 ?例如,在可能的情况下允许共享访问,以便数据库操作可以并发运行,在适当的情况下请求独占访问,以便关键操作获得最高优先级。同样,存储引擎的选择非常重要。InnoDB 存储引擎在无需人工干预的情况下处理大多数锁定问题,从而在数据库中实现更好的并发性,并减少对代码的实验和调优。

  • 用于缓存的内存区域 大小是否正确?即大到足够保存频繁访问的数据,却又没有大到超过物理内存大小导致分页。需要配置的主内存区域是 InnoDB Buffer Pool 和 MyISAM Key Cache。

在硬件级别进行优化

随着数据库越来越忙,任何数据库应用程序最终都会遇到硬件限制。DBA 必须评估是否可以调整应用程序或重新配置服务器以避免这些 瓶颈 ,或者是否需要更多的硬件资源。系统瓶颈通常来自以下来源:

  • 磁盘查找。磁盘查找一块数据需要时间。对于现代磁盘,这一过程的平均时间通常低于 10ms, 因此理论上我们可以每秒进行 100 次寻道。这一时间随着新磁盘的使用而缓慢提高,很难针对单个表进行优化。优化寻道时间的方法是将数据分配到多个磁盘上。
  • 磁盘读写。当磁盘位于正确位置时,我们需要读取或写入数据。对于现代磁盘,一个磁盘至少提供 10–20MB/s 的吞吐量。这比查找更容易优化,因为您可以从多个磁盘并行读取。
  • CPU 周期。当数据在主内存中时,我们必须对其进行处理以获得结果。与内存总量相比,拥有较大的表是最常见的限制因素。但对于小表,速度通常不是问题。
  • 内存带宽。当 CPU 需要的数据超过 CPU 缓存的容量时,主内存带宽就会成为瓶颈。对于大多数系统来说,这是一个不常见的瓶颈,但需要注意。

平衡可移植性和性能

要在可移植的 MySQL 程序中使用面向性能的 SQL 扩展,可以将 MySQL 特定的关键字包装在 /*!*/ 中的语句中注释分隔符。其他 SQL 服务器忽略注释的关键字。有关撰写注释的信息,请参见 第 9.7 节 “注释” 。

相关文章:

8.1 优化概述

数据库性能取决于数据库级别的几个因素,例如表、查询和配置设置。这些软件结构导致了硬件级别的 CPU 和 I/O 操作,您必须将其最小化并尽可能提高效率。在研究数据库性能时,首先要学习软件端的高级规则和准则,然后使用墙上的时钟时…...

从0到1一步一步玩转openEuler--14 openEuler DNF(YUM)配置管理

文章目录14.1 DNF配置文件14.1.1 配置main部分14.1.2 配置repository部分14.1.3 显示当前配置14.2 创建本地软件源仓库14.3 添加、启用和禁用软件源14.3.1 添加软件源14.3.2 禁用软件源14.3.3 启用软件源DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查…...

leetcode707 设计链表 带有输入和输出的

题目: 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节…...

100种思维模型之非sr思维模型-012

什么是sr? sr是stimulus-response的缩写,意思是刺激反应。 那么非sr思维模型就是非刺激反应思维模型的意思。 今天我们来聊聊非sr思维模型——一个提醒我们思考,提醒我们任何时刻都有选择权的思维模型。 本文依然从三个方面进行介绍,何谓…...

绿竹生物再冲刺港交所上市:暂未商业化,孔健夫妇为实控人

近日,北京绿竹生物技术股份有限公司(下称“绿竹生物”)在港交所递交招股书,准备在港交所主板上市,中金公司为其独家保荐人。据贝多财经了解,绿竹生物曾于2022年6月28日在港交所递表。 相较于此前招股书&am…...

加拿大MSB金融牌照申请方案

什么是加拿大MSB金融牌照? 根据犯罪所得(洗钱)和恐怖主义融资法案,您的企业必须在加拿大金融交易和报告分析中心 (FINTRAC) 注册成为货币服务企业。自 2020 年 6 月 1 日起,外国货币服务企业也必须在 FINTRAC 注册&…...

javaEE 初阶 — 滑动窗口

文章目录滑动窗口1 滑动窗口下如何处理丢包TCP 工作机制:确认应答机制 超时重传机制 连接管理机制 滑动窗口 确认应答机制、超时重传机制、连接管理机制 都是给 TCP 的可靠性提供支持的。 虽然事变的比较可靠了,但是是有牺牲的,那就是传输…...

大咖说·图书分享|狼书(卷3):Node.js高级技术

Node.js都有哪些需要掌握的高级技术?前端为什么同样需要学习? Node.js未来的发展趋势究竟如何?本期大咖说,Node布道师桑世龙携新作《狼书(卷3):Node.js高级技术》展开分享。 ● 嘉宾介绍 桑世龙:Node布道…...

1.5配置NBMA和P2MP网络类型

1.3.3实验5:配置NBMA和P2MP网络类型 1. 实验需求 控制OSPF DR的选举修改OSPF的网络类型2. 实验拓扑 配置NBMA和P2MP网络类型实验拓扑如图1-13所示。 图1-13 配置NBMA和P2MP网络类型 3. 实验步骤 帧中继的配置如图1-14和图1-15所示...

Java面试题

三次握手,四次挥手中,为什么要挥手四次 第一次握手,客户端发送同步报文到服务端,客户端知道自己有发送数据能力,不知道服务端是否有发送、接受数据能力。 第二次握手,服务端收到同步报文,并回复…...

opencv锁定鼠标定位

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...

机器连接和边缘计算

以一种高效、可扩展的方式进行连接和边缘计算的结合,解决了在工业物联网应用中的机器数据集成问题。 一 边缘计算 边缘计算描述了由中央平台管理的数据分散式处理。边缘计算对于工业物联网而言非常重要。在许多应用程序中,由于数据量非常大,…...

利用NGROK将本地网站发布为一个公开网站

一般与第三方服务集成时,需要提供https的回调URL,本地开发阶段可以利用NGROK将本地网站发布为公开的https网站。https://ngrok.com/downloadWindow下载地址:https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip以Window…...

Vulnhub 渗透练习(一)—— Breach 1.0

环境搭建 环境下载: https://www.vulnhub.com/entry/breach-1,152/ 环境描述: Vulnhub 中对此环境的描述: VM 配置有静态 IP 地址 (192.168.110.140),因此您需要将仅主机适配器配置到该子网。 这里我用的是 VMware &#xff0…...

初探Spring采用Spring配置文件管理Bean

文章目录Spring容器演示--采用Spring配置文件管理Bean(一)创建Maven项目(二)添加Spring依赖(三)创建杀龙任务类(四)创建勇敢骑士类(五)采用传统方式让勇敢骑士…...

【手写 Vuex 源码】第十二篇 - Vuex 插件机制的实现

一,前言 上一篇,主要介绍了 Vuex 插件的开发,主要涉及以下几个点: Vuex 插件的使用介绍;Vuex 插件开发和使用分析;Vuex 插件机制的分析; 本篇,继续介绍 Vuex 插件机制的实现&…...

图像去噪技术简述

随着每天拍摄的数字图像数量激增,对更准确、更美观的图像的需求也在增加。然而,现代相机拍摄的图像不可避免地会受到噪声的影响,从而导致视觉图像质量下降。因此,需要在不丢失图像特征(边缘、角和其他尖锐结构&#xf…...

数据迁移——技术选型

日常我们在开发中,随着业务需求的变更,重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移,从而使业务能正常支行。 背景如下:老系统中使用了mongo数据库,由…...

第二十七章 java并发常见知识内容(CompletableFuture)

JAVA重要知识点CompletableFuture常见函数式编程操作创建 CompletableFuture静态工厂方法处理异步结算的结果异常处理组合 CompletableFuturethenCompose() 和 thenCombine() 区别并行运行多个 CompletableFutureCompletableFuture Java 8 才被引入的一个非常有用的用于异步编…...

Qt扫盲-QMake 使用概述

QMake 使用概述一、概述二、简单开始三、使应用程序可调试1. 添加平台特定的源文件2. 如果文件不存在,停止qmake3. 检查多个条件一、概述 本教程教你qmake的基础知识。qmake 其实就是一个自动化编译的流程控制文件,也是Qt程序的生成makefile的工具&…...

server.impl.ts 文件分析

server.impl.ts 文件分析 文件概述 server.impl.ts 是 OpenClaw 项目的网关服务器实现文件,负责启动和管理整个网关服务。它包含了网关服务器的核心功能,如配置加载、认证授权、通道管理、WebSocket 服务器、插件系统、健康监控等。 文件结构与功能分析 详细注释 import…...

Awesome Programming for Kids深度解析:从玩具机器人到代码世界的桥梁

Awesome Programming for Kids深度解析:从玩具机器人到代码世界的桥梁 【免费下载链接】awesome-programming-for-kids A curated list of resources for teaching kids programming. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-programming-for-kids…...

终极指南:Theatre状态管理最佳实践——如何避免过度响应式设计陷阱

终极指南:Theatre状态管理最佳实践——如何避免过度响应式设计陷阱 【免费下载链接】theatre Motion design editor for the web 项目地址: https://gitcode.com/gh_mirrors/th/theatre 在现代Web动画与交互开发中,Theatre作为强大的Motion desig…...

Fish Speech 1.5新手教程:Gradio界面布局解读、滑块参数含义与推荐值

Fish Speech 1.5新手教程:Gradio界面布局解读、滑块参数含义与推荐值 1. 认识Fish Speech 1.5的Gradio界面 Fish Speech 1.5提供了一个直观的Web界面,让即使没有编程经验的用户也能轻松使用语音合成功能。整个界面采用左右分栏设计,左侧是输…...

90度皮带转弯机(CAD)

90度皮带转弯机作为物流输送系统中的关键设备,其核心作用在于实现物料输送路径的灵活转向。在传统直线输送场景中,若需改变物料流向,通常需通过多段直线设备拼接或增设机械臂等复杂结构,这不仅占用大量空间,还会增加设…...

Windows 11 WSL默认存储位置修改全攻略:从新手到高手

Windows 11 WSL默认存储位置修改全攻略:从新手到高手 对于许多开发者而言,Windows Subsystem for Linux(WSL)已经成为日常开发不可或缺的工具。然而,随着使用时间的增长,C盘空间告急的问题逐渐显现——特别…...

PowerPaint-V1实战:用AI画笔快速制作干净无杂物的产品展示图

PowerPaint-V1实战:用AI画笔快速制作干净无杂物的产品展示图 1. 引言:产品图的烦恼与AI的解法 如果你是电商卖家、内容创作者,或者只是需要经常处理图片的人,下面这个场景你一定不陌生: 精心拍摄了一组产品照片&…...

7.第7章 多模态大模型(37页)

扫描下载 文档详情页: https://www.didaidea.com/wenku/16596.html...

JDK17 前后写法对比:差点没认出是 Java!

Java,一直被开发者戏称为“啰嗦”,但从 JDK 12 到 JDK 17,这门语言发生了显著变化。多个语法层面的增强让 Java 更加简洁、表达力更强,也更接近现代语言的风格。本文将带你梳理这六个版本中 Java 的关键语法演进。语法新特性一览1…...

传统问卷设计VS书匠策AI:科研问卷的“智变”之旅

在科研的浩瀚海洋中,问卷设计宛如一座灯塔,为研究者指引着收集数据、探索真相的方向。然而,传统问卷设计方式常常让研究者们陷入繁琐的流程与无尽的纠结之中,从构思问题到排版布局,每一步都充满挑战。而如今&#xff0…...