mysql 千万量级的表的优化

实战指南:从零开始用YOLOv8训练VisDrone无人机检测模型 本文提供了一份详细的实战指南,手把手教你从零开始使用YOLOv8训练一个无人机检测模型。内容涵盖VisDrone数据集下载与格式转换、YAML配置文件编写、模型训练与评估,以及最终的推理部署,旨在帮助开发者快速掌握无人机视角下的目标检测技术。 阅读详情


参考:

一  大的优化方向: 数据结构优化,慢查询优化,索引优化,mysql参数设置优化


数据结构优化:先读写分离、再垂直拆分、再水平拆分!


说3点
1. 设计合适的索引,基于主键的查找,上亿数据也是很快的;
2. 反范式化设计,以空间换时间,避免join,有些join操作可以在用代码实现,没必要用数据库来实现;
3. buffer,尽量让内存大于数据.



至于优化若是指创建好的表,不能变动表结构的话,那建议InnoDB引擎,多利用点内存,减轻磁盘IO负载,因为IO往往是数据库服务器的瓶颈 

来自:http://www.zhihu.com/question/19719997



我的问题:两个数据库,database A 和 B(be)  ;每个都有两个表event和id

A  


id表增长到不会超过1亿,然后会有频繁的更新.更新需要查找id值。这个亦可以分表。按照gid的不同,在程序中处理插入不同哦功能的表


每天生成一个新表,然后整体再插入总表??

event表一直累加,会超过1亿,需要自动切表


问题:1  数据库是否是瓶颈?  再开几个进程看数据库插入更新会不会有加速现象.多开程序的作用已经不大,很微小。所以瓶颈在数据库上了

             2 瓶颈在哪里?  insert时间花费0--100毫秒  ,update 100--1000ms


具体做法:

原来查看速度:  

          

            Com_insert                    100                     

           Com_update                    30



以下测试再关闭程序debug日志的情况下进行



使用gprof分析程序得到 parsesql占23.5%,parseupdatesql15.5%,jsontomap占23.5,推测数据库执行占40%?

1     程序是瓶颈,开了6个进程

原来速度:   

          2013.09.26 。10:00        开了6个进程来跑。速度

                                                     第一次测试    第二次测试 

           Com_insert                    489                     342

          Com_update                   204                     182                 

措施:加内寸,拆表


得到结论: 1  只写入event表,看会不会堵塞。不需要做这个实验,DBA自动切表就行,这样就很小。


2      数据库表很大的时候,主要考虑IO速度慢的问题,因为表太大,不能全部放进内存,所以需要硬盘IO,引起速度慢。

                    1 查看表大小,event表占35G,gid表占3G。

           数据库设定的内存大小是10G,event是在太大了,导致频繁的磁盘IO。

A   gid

 TABLE_NAME  | DATA_LENGTH | DATA_LENGTH+INDEX_LENGTH | TABLE_ROWS |
+-------------+-------------+--------------------------+------------+
| Mapping_gid |  2980036608 |               3606970368 |    5162861 |

+-------------+-------------+--------------------------+-----------

event

+------------------------+-------------+--------------------------+------------+
| TABLE_NAME             | DATA_LENGTH | DATA_LENGTH+INDEX_LENGTH | TABLE_ROWS |
+------------------------+-------------+--------------------------+------------+
| Mapping_event_20130925 | 29944184832 |              33361494016 |   61712037 |
+------------------------+-------------+--------------------------+------------+

B  gid

+-------------+-------------+--------------------------+------------+
| TABLE_NAME  | DATA_LENGTH | DATA_LENGTH+INDEX_LENGTH | TABLE_ROWS |
+-------------+-------------+--------------------------+------------+
| Mapping_gid |  2173698048 |               2702901248 |    4216890 |
+-------------+-------------+--------------------------+------------+

event

------------------------+-------------+--------------------------+------------+
| TABLE_NAME             | DATA_LENGTH | DATA_LENGTH+INDEX_LENGTH | TABLE_ROWS |
+------------------------+-------------+--------------------------+------------+
| Mapping_event_20130925 |  6227492864 |               6919553024 |   15018002 |     


对策:把event按每天备份 ; 这样每天的event表就很小。


结果:   

                                          第一次测试   

           Com_insert                    1158                 

          Com_update                    552               


3  修改程序,原来程序insert不成功然后再update,改成insert into  duplicate

可以解决的问题:1 多个进程写数据,id会跳跃性自增    2  两条变一条

                          


各位,请教一个mysql问题。
说明:数据库id是主键,gid是唯一索引。insert into duplicate使用gid作为条件。
问题如下:
昨天我使用insert into duplicate 试验了很久、
我开了两个进程。都执行insert into duplicate语句。
进程A事实上只执行update,进程B 事实上只执行insert
单独开A时,id不变,单独开B,id是顺序增长同时开A,B,id跳跃性增长的。
可有什么解决方案推荐,使得id是顺序+1增长的?


解释: 只能说 insert into duplicate 也使得id 自增了.但是如果后来执行的是update操作,撤销了.

可设置 innodb_autoinc_lock_mode = 0 使的获取自增id的锁方式为表锁, 但是此参数是全局的(即影响所有表,且需重启数据库生效),对于高并发写入的数据,会影响插入性能,不建议

如果使用insert into duplicate 只能解决两条变一条,不能解决id问题。





我具体做法:(1)开了多份程序,提高了数据库写入和更新的速度

                          (2) 加大内存 

未填加内存前速度 -loginfo:

                     Com_insert            Com_update

                          400                              160




                             (3)修改字段

                             (4)拆表

Rust 与 Golang 深度对决:从语法到应用场景的全方位解析 Rust 定义函数以fn关键字开头,参数需明确指定类型,返回值类型紧跟在箭头->之后。// 定义函数add,接收两个i32类型参数a和b,返回i32类型结果,功能为两数相加a + bRust 和 Golang 各有千秋,在不同领域展现独特优势。Rust 凭借强大的内存安全与高性能,在系统编程、网络编程以及对内存安全和性能要求高的场景中表现突出;Golang 则以简洁语法和出色并发性能,在云计算、分布式系统、Web 开发等领域占据一席之地。 阅读详情

相关推荐

利用Arcgis发布wmts服务

使用发布 GIS 服务连接连接到 ArcGIS Server 站点后,可以将各种 GIS 资源(如地图文档、数据库以及服务定义)发布到服务器上。此外,还可以添加、删除、启动和停止服务。使用管理 GIS 服务器连接到 ArcGIS Server 站点后,可以编辑各种服务器属性,例如配置存储位置、集群配置、参与到该站点中的计算机列表以及管理站点的数据存储。通过使用 GIS 服务连接建立连接后,可以查看并使用发布到该站点的服务。但不能编辑服务器或服务属性、发布服务,也不能添加、删除、启动、停止或暂停服务。

ghgfsasxda的博客 2392

mysql千万级数据量根据索引优化查询速度

(一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经让人难以忍受了。 提升查询速度的方向一是提升硬件(内存、cpu、硬盘),二是在软件上优化(加索引、优化sql;优化sql不在本文阐述范围之内)。 能在软件上解决的,就不在硬件上解决,毕竟硬件提升...

李秀才的博客 5万+

Mcgs 屏幕Modbus RTU通讯调试

昆仑通态屏幕作为Modbus Master 与 Modbus Slave通过RS485接口实现通信的调试记录

madao1234的博客 5569

MySQL千万级数据从190秒优化到1秒全过程

千万级数据大概就是MySQL查询的天花板了。

欢迎关注公众号“雨林寻北”,添加个人微信codetrend(备注技术)。 2444

deepfacelab下载安装及训练(小白篇),以及导出SAEHD为dfm文件,解决broken pipe问题

其中如果用的是RTX30系列显卡的话,需要把WIN10升级到20H4或更新版本,然后打开硬件加速,不然会出现训练时一直卡在第一个迭代不动了,我的服务器版本为22H2,符合。支持WIN10,win11,WIN7,LINUX,不支持mac(因为mac不支持NVIDIA显卡)

caoyongsheng的博客 3887

Kali Linux实战:5种局域网DoS攻击手法全解析(附防御方案)

本文以Kali Linux为平台,深入解析了局域网内五种典型的DoS攻击手法,包括TCP SYN Flood、ICMP Flood、MAC地址泛洪、DHCP耗尽以及应用层CC攻击模拟。通过实战演示结合Wireshark抓包分析,清晰揭示了攻击原理与流量特征,并提供了从主机加固、防火墙规则到交换机安全配置(如端口安全、DHCP Snooping)等企业级防御方案,旨在帮助安全人员构建纵深防御体系。

weixin_29313423的博客 396

数据库性能调优秘籍:让千万级数据查询响应时间缩短至秒级的实战攻略

实现千万级数据查询的秒级响应,需要从索引优化、查询优化、服务器配置、数据库架构等多个方面入手,综合运用各种技术和策略。同时,建立完善的监控体系,持续进行性能优化,才能应对不断增长的数据量和日益复杂的业务需求,为企业提供高效、稳定的数据库服务。

数字魔方操控师的博客 1456

YOLOv13改进策略【Backbone/轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 669

MySQL 百万 千万 数据量级别 的 优化方案

百万级 字段选择优化 表字段 not null,因为 null 值很难查询优化且占用额外的索引空间,推荐默认数字 0。 数据状态类型的字段,比如 status, type 等等,尽量不要定义负数,如 -1。因为这样可以加上 UNSIGNED,数值容量就会扩大一倍。 可以的话用 TINYINT、SMALLINT 等代替 INT,尽量不使用 BIGINT,因为占的空间更小。 字符串类型的字段会比数字类型占的空间更大,所以尽量用整型代替字符串,很多场景是可以通过编码逻辑来实现用整型代替的。 字符串类型长度不要随

qq_33454058的博客 2190

基于YOLOv8的人群聚集检测系统:含UI界面设计与数据集应用

人群聚集检测是智慧城市、公共安全和疫情防控等领域的重要任务。本文结合YOLOv8最新目标检测技术,设计并实现了一个高效的人群聚集检测系统,支持可视化UI界面操作,方便用户实时检测和分析视频中的人群密度。本文详细介绍了系统设计思路、使用的数据集、YOLOv8模型训练和推理过程,以及UI界面的开发与整合。最后通过实验验证了该系统的实用性和性能表现。更灵活的模型架构强化的特征融合网络(PAN++)自动混合精度训练支持支持多任务学习(目标检测+分类+分割)预训练模型丰富,适应多种应用场景。

YOLO 433

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 182

mysql 量级_mysql 千万量级的表的优化

参考:一 大的优化方向:数据结构优化,慢查询优化,索引优化,mysql参数设置优化数据结构优化:先读写分离、再垂直拆分、再水平拆分!说3点1. 设计合适的索引,基于主键的查找,上亿数据也是很快的;2. 反范式化设计,以空间换时间,避免join,有些join操作可以在用代码实现,没必要用数据库来实现;3. buffer,尽量让内存大于数据.至于优化若是指创建好的表,不能变动表结构的话,那建议In...

weixin_30799553的博客 302

YOLOv11改进 - C3k2融合 | C3k2融合CBSA 收缩 - 广播自注意力:轻量级设计实现高效特征压缩,优化处理效率 | NeurIPS 2025

本文介绍收缩 - 广播自注意力(CBSA)((Contract-and-Broadcast Self-Attention))机制,并将其集成到YOLOv11中。传统注意力机制存在黑盒难理解、计算复杂度高的问题,CBSA通过算法展开推导出本质上可解释且高效的注意力机制。它先从输入数据中选出少量代表性tokens,接着对代表进行收缩计算,再将结果广播给所有原始数据。该机制计算量线性增长,具有明确数学解释,还能统一多种注意力机制。我们将CBSA代码集成到YOLOv11的C3k2模块中。实验证明,改进后的YOLOv

魔改工程师的博客 852

MySQL update语句带子查询的优化探寻

可见 MySQL 5.7 对 update 语句带 IN 子查询的优化是比较差劲的,即使条件涉及的字段均有索引,优化器也会将语句优化成 EXISTS 条件,导致外表全表扫描;这样的SQL咋一看,record.uuid、bill.apply_id 均有索引,似乎并没有什么问题,但实际上线后(record表千万数量级)却会执行超时(5秒)。执行计划咋一看有走索引,实际上从key和扫描行数rows可看出走了全表扫描,导致执行时长需0.12秒。结果如下,表现一致,仍就走了全表扫描。确实是走了全表扫描。

sc35262的博客 566

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

别再说SQL简单了,这五个优化技巧至少值二十万年薪

我在数据库行业摸爬滚打了十年,这样的场景经历了不下二十次。每一次都是血与泪的教训,每一次都在倒逼我重新审视那些看似简单、实则暗藏杀机的SQL语句。今天,我不想给你罗列一堆枯燥的优化法则,而是想带你走进我亲身经历的几个真实事故现场,看看那些让系统崩溃的SQL到底长什么样,以及我是如何一步步把它们从“性能杀手”改造成“优雅跑车”的。

Start_mswin的博客 359

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何优化MySQL千万级大表,我写了6000字的解读

这是学习笔记的第2138篇文章 千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个...

杨建荣的学习笔记 7万+

MYSQL千万级数据量的优化方法积累

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t ...

lovely_1014的博客 299

如何优化MySQL千万级大表

千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分: “千万级”,“大表”,“优化”,也分别对应我........................

分享前端工程化、AI 应用、Agent 开发与大模型实践! 3271

mysql的count()函数如何选择索引,千万级表的count()查询优化实例

一、前言       博主今天在对一个千万级表进行count(*)查询的时候,发现速度有点慢,达到了9s,这对于程序来说是不可承受的,因此萌生了优化count(*)查询的想法,这里记录一下。 1、网上的主要两种说法 (1)count(*) 函数会选择索引长度最短的字段 ps:索引长度指的是执行计划explain里面的key_len长度。...

铁柱的博客 1万+

MySQL千万级大表优化

千万级大表如何优化,这是一个很有技术含量的问题,通常我们直觉思维都会 跳转到拆分或者数据分区。在此我想做一些补充和梳理,想和大家做一下这方面的经验总结和交流。以下是分析大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分: “千万级”、“大表”、“优化”, 也分别对应我们在图中的标识: “数据量”、“对象”、“目标” 1. 数据量:千万级 千万级只是一个感官数字,就是我们印象中的大数据量。这里我们需要把这个概念细化,因为随着业务和时间的变化,数据量也会有变化,我们应该是

傅红雪的专栏 1029

MySQL 对于千万级的大表要怎么优化?

千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分: “千万级”,“大表”,“优化”, 也分别对应我们在图中标识的 “数据量”,“对象”和“目标”。 我来逐步展开说明一下,从而给出一系列的解决方案。 1.

NicolasLearner的博客 1074

面对MySQL千万级别大表,你要如何优化?

前言 数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 正文 1. 优化一览图 2. 优化 笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置. 2.1 软优化 2.1.1 查询语句优化 1.首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息. 2.例:

uuqaz的博客 1316

千万级大表如何优化

这是学习笔记的第2138篇文章 千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分: “...

我的博客 2572

优化MySQL千万级大表

千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分: “千万级”,“大表”,“优化”, 也分别对...

万物并作,吾以观复 315
上一篇: 服务器性能分析工具gprof的使用及没有生成gmon.out文件的原因
下一篇: mysql优化------2 查看系统性能(表大小,I/o性能)
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值