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

MySQL之优化服务器设置(三)

优化服务器设置

InnoDB表空间

InnoDB把数据保存在表空间内,本质上是一个由一个或多个磁盘文件组成的虚拟文件系统。InnoDB用表空间实现很多功能,并不只是存储表和索引。它还保存了回滚日志(旧版本行)、插入缓冲(Insert Buffer)、双写缓冲(Doublewrite Buffer),以及其他内部数据结构。配置表空间。通过innodb_data_file_path配置项可以定制表空间文件。这些文件都放在innodb_dta_home_dir指定的目录下。这是一个例子:

innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:1G;ibdata2:1G;ibdata3:1G

这里再三个为文件中创建了3GB的表空间。有时人们并不清楚可以使用多个文件分散驱动器的负载,像这样:

innodb_data_file_path = /disk1/ibdata1:1G;/disk2/ibdata2:1G;....

在这个例子中,表空间确实放在代表不同驱动器的不同目录中,InnoDB把这些文件首尾相连组合起来。因此,通常这种方式并不能获得太多收益。InnoDB先填满第一个文件,当第一个文件满了再用第二个文件,如此循环;负载并没有按照希望的高性能方式分布。用RAID控制器是分布负载更聪明的方式。为了允许表空间再超过了分配的空间时还能增长,可以像这样配置最后一个文件自动扩展:

...ibdata3:1G:autoextend

默认的行为是创建单个10MB的自动扩展文件。如果让文件可以自动扩展,那么最好给表空间大小设置一个上线,别让它扩展得太大,因为一旦扩展了,就不能收缩回来。例如,下面得例子限制了自动扩展文件最多到2GB:

...ibdata3:1G:autoextend:max:2G

管理一个单独得表空间可能有点麻烦,尤其是如果它是自动扩展的,并且希望回收空间时(因为这个原因,我们建议关闭自动扩展功能,至少设置一个合理的空间范围)。回收空间唯一的方式是导出数据,关闭MySQL,删除所有文件,修改配置,重启,让InnoDB创建新的数据文件,然后导入数据。InnoDB这种表空间管理方式很让人头疼——不能简单地删除文件或者改变大小。如果表空间损坏了,InnoDB会拒绝启动。对日志文件也一样的严格。如果像MyISAM一样随便移动文件,千万要谨慎。
innodb_file_per_table选项让InnoDB为每张表使用一个文件,MySQL4.1和之后的版本都支持。它在数据字典存储为"表明.ibd"的数据。这使得删除一张表时回收空间简单多了,并且可以容易地分散表到不同的磁盘上。然而,把数据放到多个文件,总体来说可能导致更多的空间浪费,因为把单个InnoDB表空间的内部碎片浪费分布到了多个.ibd文件,对于非常小的表,这个问题更大,因为InnoDB的页大小是16KB.即使表只有1KB的数据,仍然需要至少16KB的磁盘空间。即使打开innodb_file_per_table选项,依然需要为回滚日志和其他系统数据创建共享表空间。没有把所有数据存在其中是明智的做法,但最好还是关闭它的自动增长,因为无法在不重新导入全部数据的情况下给共享表空间瘦身。一些人喜欢使用innodb_file_per_table,只是因为特别容易管理,并且可以看到每个表的文件。例如,可以通过查看文件的大小来确认表的大小,这比用SHOW TABLE STATUS来看快多了,这个命令需要执行很多复杂的工作来判断给一个表分配了多少页面。设置innodb_file_per_table也有不好的一面:更差的DROP TABLE性能。这可能足以导致显而易见的服务器端阻塞。因为由如下两个原因:

  • 1.删除表需要从文件系统层去掉(删除)文件,这可能在某些文件熊(ext3,说的就是你)上会很慢。可以通过欺骗文件系统来缩短这个过程:把.ibd文件链接欸到一个0字节的文件,然后手动删除这个文件,而不用等待MySQL来做。
  • 2.当打开这个选项,每张表都在InnoDB中使用自己的表空间。结果时,移除表空间实际上需要InnoDB锁定和扫描缓冲池,查找术语这个表空间的页面,在一个有庞大的缓冲池的服务器上做这个操作是非常慢的。如果打算删除很多InnoDB表(包括临时表)并且用了innodb_file_per_table,可能会从Percona Server包含的一个修复中获益,他可以让服务器慢慢地清理掉术语被删除的页面。只需要设置innodb_lazy_drop_table这个选项。

什么是最终的建议?我们建议使用innodb_file_per_table并且给共享表空间设置大小范围,这样可以过得舒服点(不用处理那些空间回收的事)。如果遇到人恶化头痛的场景,就像上面说的,考虑用下Percona的那个修复。提醒一下,事实上没有必要把InnoDB文件放在传统的文件系统上,像许多的传统数据库服务器一样,InnoDB提供使用裸设备的选项——例如,一个没有格式化的分区——作为它的存储。然而,今天的文件系统已经可以存放足够大的文件,所以经没有必要使用这个选项。使用裸设备可能提升几个百分点的性能,但是我们不认为这点小提升足以抵消这样做带来的坏处,我们不能直接使用文件管理数据。当把数据存在一个裸设备分区时,不能使用mv、cp或其他任何工具来操作它。最终,这点小的性能收益显然不值得。

在这里插入图片描述

innod_file_per_table默认是打开的

行的旧版本和表空间

在一个写压力大的环境下,InnoDB的表空间可能增长得非常大。如果事务保持打开状态很久(即使它们没有做任何事),并且使用默认得REPETABLE READ事务隔离级别,InnoDB将不能删除旧得行版本,因为没提交得事务依然需要看到它们。InnoDB把旧版本存在共享表空间,所以如果有更多的数据在更新,共享表空间会持续增长。有时这个问题并非是没有提交的事务的原因,也可能是工作负载的问题:清理过程只有一个线程处理,直到最近的MySQL版本才改进,这可能导致清理线程处理速度跟不上旧版本行数增加的速度。
无论发生何种情况,SHOW INNODB STATUS的数据都可以帮助定位问题。查看历史链表的长度会显示了回滚日志的大小,以页为单位。分析TRANSACTIONS部分的第一行和第二行可以证实这个观点,这部分展示了当前事务号以及清理线程完成到了哪个点。如果这个表差距很大,可能有大量的没有清理的事务。这有个例子:

---------
TRANSACTIONS
---------
Trx id counter 0 80157601
Purge done for trx's n:o < 0 80154573 undo n:o < 0 0

事务标识是一个64比特的数字,由两个32比特的数字(在更新版本的InnoDB中这是一个十六进制的数组)组成,所以需要这一点数学计算来计算差距。在这个例子中旧很简单了,因为最高为是0:那么由80 157 601 - 80 154 573 = 3028个"潜在的"没有被清理的事务。我们说"潜在的",是因为这跟很多没有清理的行是由很大区别的。只有改变了数据的事务才会创建旧版本的行,但是有很多事务并没有修改过数据(相反的,一个事务也可能修改很多行)
如果有个很大的回滚日志并且表空间因此增长得很快,可以强制MySQL减速来使InnoDB的清理线程可以跟得上。这听起来不怎么样,但是没办法。否则,InnoDB将保持数据写入,填充磁盘直到最后磁盘空间饱满,或者表空间大于定义的上线。
为了控制写入速度,可以设置innodb_max_purge_lag变量为一个大于0的只。这个只标识InnoDB开始延迟后面的语句更新数据之前,可以等待被清除的最大的事务数量。你必须直到工作负载以决定一个合理的只。例如事务平均影响1KB的行,并且可以容许表空间里有100MB的未清理行,那么可以设置这个值为100 000.牢记,没有清理的行版本会对所有的查询产生影响,因为它们事实上使得表和索引更大了。如果清理线程确实跟不上,性能可能显著地下降。设置innodb_max_purge_lag变量也会降低性能,但是它的伤害较少。在更新版本的MySQL中,甚至在更早版本的Percona Server和MariaDB,清理过程已经显著地提升了性能,并且从其他内部工作任务中分离出来。甚至可以创建多个专用地清理线程来更快地做这个后台工作。如果可以利用这些特性,会比限制服务器地服务能力要好得多

相关文章:

MySQL之优化服务器设置(三)

优化服务器设置 InnoDB表空间 InnoDB把数据保存在表空间内&#xff0c;本质上是一个由一个或多个磁盘文件组成的虚拟文件系统。InnoDB用表空间实现很多功能&#xff0c;并不只是存储表和索引。它还保存了回滚日志(旧版本行)、插入缓冲(Insert Buffer)、双写缓冲(Doublewrite …...

如何实现 Python 源码压缩加密常用解决方案详细教程(更新中)

Python是一种高级的、解释型的、面向对象的编程语言&#xff0c;Python 码简洁易读&#xff0c;并且Python语言跨平台&#xff0c;拥有丰富的标准库和第三方库&#xff0c;深受开发人员的喜爱。 Python 程序扩展名 .py&#xff1a;这是 Python 程序的标准文件扩展名。当你创建…...

SAP Build 2-PDF数据提取与决策

0. 安装desktop agent 在后续过程中发现要预先安装desktop agent&#xff0c;否则没法运行自动化流程… 0.1 agent下载 参考官方文档说明 https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-user-in-rbsc-download-repository?loca…...

【回溯】Leetcode 77. 组合【中等】

组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a; n 4, k 2 输出&#xff1a; [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路 定义递归函数&#xff1…...

项目中常量的定义方式

方式一 在常量个数少的时候&#xff0c;通常情况下使用这种方式。 public class MqConstants {public static final String EXCHANGE_1 "exchange1";public static final String EXCHANGE_2 "exchange2";public static final String EXCHANGE_3 "…...

BL104钡铼多协议采集网关助力企业智能化转型

BL104钡铼多协议采集网关&#xff08;PLC物联网关BL104&#xff09;是为满足工业环境需求而设计的专业工业级协议转换网关。它在企业智能化转型过程中扮演着关键角色&#xff0c;为企业提供了高效、稳定的通信解决方案&#xff0c;助力企业实现智能化转型。 首先&#xff0c;P…...

【LC刷题】DAY08:151 55 28 459

【LC刷题】DAY08&#xff1a;151 55 28 459 文章目录 【LC刷题】DAY08&#xff1a;151 55 28 459151. 反转字符串中的单词 [link](https://leetcode.cn/problems/reverse-words-in-a-string/description/)55. 右旋字符串 [link](https://kamacoder.com/problempage.php?pid106…...

Debian 12.5 一键安装 Oracle 19C 单机

前言 Oracle 一键安装脚本&#xff0c;演示华为 Debian 12.5 一键安装 Oracle 19C 单机版过程&#xff08;全程无需人工干预&#xff09;。 ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 安装准备 1、安装好操作系统&#xff0c;建议安装图形化2、配置好网络3、上…...

ARP协议相关

把ip地址解析成mac地址这里的mac地址就是路由器的mac地址 免费ARP 源ip和目的ip都是一样的&#xff0c;那怎么让其他人更新arp表呢&#xff1f;&#xff1f; 是因为目标mac是全f&#xff0c;是一个广播报文 如果冲突就是ip一样但是mac又不一样 代理ARP pc1和pc4是在同一个子网…...

Github 2024-06-14 开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-14统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目2Python项目2非开发语言项目2TypeScript项目1Dart项目1Rust项目1Lua项目1Java项目1Jupyter Notebook项目1从零开始构建你喜爱的技…...

记录AE快捷键(持续补充中。。。)

记录AE快捷键 快捷键常用快捷键图层快捷键工具栏图层与属性常用指令视图菜单时间轴常规快捷键项目首选项功能摄像机操作 常用操作导入AI/PS工程文件加选一个关键参数快速回到上下一帧隐藏/显示图层关键帧拉长缩短关键帧按着鼠标左键不松手&#xff0c;在秒表那一列往下移动会都…...

基于springboot实现问卷调查系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现问卷调查系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;问卷信息因为其管理内容繁杂&#xff0c;管理数…...

React@16.x(29)useRef

目录 1&#xff0c;介绍2&#xff0c;和 React.createRef() 的区别3&#xff0c;计时器的问题 目前来说&#xff0c;因为函数组件每次触发更新时&#xff0c;都会重新运行。无法像类组件一样让一些内容保持不变。 所以才出现了各种 HOOK 函数&#xff1a;useState&#xff0c;u…...

无人机的力量——在民用方面的应用

无人机在民用方面的应用广泛且多样化&#xff0c;以下是对其应用的详细介绍&#xff1a; 影视航拍&#xff1a; 无人机航拍影像具有高清晰、大比例尺、小面积、高视角的优点&#xff0c;特别适合获取带状地区航拍影像&#xff08;如公路、铁路、河流、水库、海岸线等&#xff…...

探索档案未来,尽在ARCHE-2024

2024年第三届上海国际智慧档案展览会暨高峰论坛&#xff08;ARCHE-2024&#xff09;将于2024年6月19日至21日在上海跨国采购会展中心隆重举行。深圳市铨顺宏科技有限公司应邀参展&#xff0c;将以全新形象盛装亮相&#xff0c;展示其在档案管理领域的最新技术和解决方案。 ARC…...

Maven 核心插件 maven-clean-plugin 使用详解

在软件开发中&#xff0c;构建和管理项目的复杂性随着代码量和依赖的增加而不断提升。Maven作为一个强大的构建工具&#xff0c;简化了这一过程&#xff0c;并通过其插件机制提供了丰富的功能。其中&#xff0c;maven-clean-plugin 是Maven的核心插件之一&#xff0c;它在项目的…...

金融数据中心布线运维管理解决方案

金融行业的核心业务&#xff0c;如交易、支付、结算等&#xff0c;对网络的依赖程度极高。布线作为网络基础设施的重要组成部分&#xff0c;其稳定性和可靠性直接关系到业务的连续运行。因此&#xff0c;良好的布线管理能够确保网络系统的稳定运行&#xff0c;减少因网络故障导…...

C++初学者指南第一步---2. Hello world

C初学者指南第一步—2. Hello world 目录 C初学者指南第一步---2. Hello world1.源文件 “Hello.cpp”2.编译hello.cpp3.术语4.编译器标志5.不要使用 “using namespace std;” &#xff01; 1.源文件 “Hello.cpp” #include <iostream> // our first program int main…...

gitLab批量下载有权限的项目

前言 参考 https://www.jianshu.com/p/b3d4e5cee835 适用于git私服拉取个人所涉及权限的代码&#xff0c;方便有多个项目权限的人快速拉取自己所有权限的代码。 默认生成目录结构与gitlab一致 步骤一:获取权限你的代码权限文件d 从gitlab私服生成所有你有权限的代码信息 …...

解决 kali 中使用 vulhub 拉取不到镜像问题

由于默认情况下&#xff0c;访问的镜像是国外的&#xff0c;而从 2023 年开始&#xff0c;docker 的镜像网站就一直访问不了&#xff0c;所以我们可以把镜像地址改成国内的阿里云镜像地址。 1、在 cd /etc/docker/目录下创建或修改daemon.json文件 sudo touch daemon.json 2、在…...

CSS3 简介

CSS3 简介 CSS3&#xff0c;即层叠样式表的第三代&#xff0c;是网页设计和开发中不可或缺的技术之一。它为HTML元素提供了更加丰富和灵活的样式定义&#xff0c;使得网页不仅结构清晰&#xff0c;而且外观精美、交互性强。CSS3继承了CSS2的基本特性&#xff0c;并引入了许多新…...

springboot事务管理的机制是什么

SpringBoot的事务管理机制实质上是基于Spring框架的事务处理机制。其主要目的是确保一系列数据库操作要么全部成功&#xff0c;要么全部失败&#xff08;回滚&#xff09;&#xff0c;从而维护数据的完整性和一致性。 SpringBoot事务管理遵循ACID四大特性&#xff1a; 1、原子…...

Linux下tar命令解压缩

tar 命令是 Unix 和 Linux 系统中用来创建归档文件以及提取归档文件的工具。它通常用于备份文件或将多个文件和目录打包成一个单独的归档文件。默认情况下&#xff0c;tar 不会对文件进行压缩&#xff0c;但可以通过结合其他压缩工具&#xff08;如 gzip 或 bzip2&#xff09;来…...

当财政支持减弱时,国有企业如何实现降本增效?

随着市场环境的不断变化和上级市场化政策要求的不断推进&#xff0c;部分国有企业面临着双重压力&#xff0c;一方面&#xff0c;市场的快速变革要求企业不断创新、提升竞争力&#xff1b;另一方面&#xff0c;在响应上级市场化转型的号召下&#xff0c;财政支持的减弱成为了许…...

大模型「训练」与「微调」概念详解【6000字长文】

本文你将学到什么 1、大模型预训练与微调的基本流程 2、预训练、训练、后期预训练、微调的区别 3、大模型训练与微调的一些概念&#xff0c;如&#xff1a; Post-pretrain、SFT、RLHF、模型对齐、Lora、Q-Lora、大模型量化、微调指标、微调参数、大模型评测指标 预训练与微…...

JVM 垃圾回收器

一、垃圾回收器类型 如果说垃圾收集算法是内存回收的方法论&#xff0c;那么垃圾收集器就是内存回收的具体 实现。下图展示了7种作用于不同分代的收集器&#xff0c;其中用于回收新生代的收集器 包括Serial、PraNew、Parallel Scavenge&#xff0c;回收老年代的收集器包括Seri…...

Spring IOC 容器的构建流程?

Spring loc (Inversion of Control) 是一种设计模式&#xff0c;其中对象的创建和依赖关系由框架管理&#xff0c;而不是由应用程序直接管理。Spring loc容器是Spring框架的核心&#xff0c;它使用loC模式来管理应用程序中的对象 Spring loC容器的构建过程如下: 1.配置元数据…...

官方文档 搬运 MAXMIND IP定位 mysql导入 简单使用

官方文档地址&#xff1a; 官方文档 文件下载 1. 导入mysql可能报错 Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查看配置 SHOW GLOBAL VARIABLES LIKE %secure%;secure_file_priv 原来…...

PHP入门教程1:PHP的基础概念和基本语法

本文将从基础开始&#xff0c;介绍PHP的基础概念和基本语法。 PHP简介环境搭建基本语法变量和常量数据类型操作符常见错误和调试方法 1. PHP简介 PHP&#xff0c;全称是 “PHP: Hypertext Preprocessor”&#xff0c;是一种开源的通用脚本语言&#xff0c;尤其适用于Web开发…...

头歌资源库(5)求阶乘问题

一、 问题描述 请输入一个50至100之间的整数n&#xff0c;求解n! 二、算法思想 输入一个50至100之间的整数n。声明一个变量result&#xff0c;并将其初始化为1&#xff0c;用于保存n的阶乘。使用一个循环&#xff0c;从1到n&#xff0c;循环变量为i。在循环中&#xff0c;将…...

网站编程薪资/网络营销最火的案例

一个 组件&#xff08;add-on&#xff09;是与 Confluence 分开安装的功能&#xff0c;能够加强 Confluence 的功能和使用。插件&#xff08;plugin&#xff09;和 组件&#xff08;add-on&#xff09;这 2 个词通常是一起使用的。 一共有 2 个主要类型的组件&#xff1a; 系统…...

织梦的手机端网站模板下载地址/seo结算系统

到目前为止&#xff0c;我们前面已经介绍了如何开发程序、调试程序以及测试程序&#xff0c;正如人们常说的&#xff1a;开发最后的10%需要花费90%的时间&#xff0c;所以这一章我们将强调这最后的10%部分&#xff0c;要真正成为让人信任并使用的优秀应用&#xff0c;需要考虑到…...

白日梦怎么做的网站/天堂网

快速找到未知长度单链表中的中间结点 1.普通方法 首先需要遍历一下链表&#xff0c;然后得知链表长度&#xff0c;然后在重新查找中间长度的结点&#xff0c;然后进行输出结点值。算法复杂度为O(n)O(1/2n)。这里就不进行普通代码演示了。 2.加分方法 运用快慢指针的方法&#…...

不用源码做网站/人教版优化设计电子书

【题目来源】https://www.acwing.com/problem/content/879/【问题描述】 给定 n 对正整数 ai,bi&#xff0c;对于每对数&#xff0c;求出一组 xi,yi&#xff0c;使其满足 aixibiyigcd(ai,bi)。【输入格式】 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含两个整数 ai,bi。…...

14年网站开发经验/怎么自己弄一个网站

文章转自&#xff1a;http://www.kancloud.cn/digest/prandmethod/102845 贝叶斯分类器的分类原理是通过某对象的先验概率&#xff0c;利用贝叶斯公式计算出其后验概率&#xff0c;即该对象属于某一类的概率&#xff0c;选择具有最大后验概率的类作为该对象所属的类。也就是说…...

网站用户 微信商城/湖南网站制作公司

jasypt能够以很简单的方式为Java项目提供加密功能&#xff0c;这种简单的方式体现着它的命令行工具&#xff0c;与Spring&#xff0c;Hibernate&#xff0c; Springsecurity&#xff0c; wicket等第三方框架的集成。 本文参加jasypt官方网站&#xff1a;http://www.jasypt.org/…...