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

简单的网站更新 关键词优化 关键词互联如何做网

简单的网站更新 关键词优化 关键词互联,如何做网,机械设备做公司网站,网站 wap 插件文章目录 前言1. 环境准备1.1 模拟造数1.2 工具安装 2. 删除数据2.1 批次删除表2.2 原理解析2.3 批处理思路 后记 前言 在线核心业务都会有日志表#xff0c;随着业务持续运行#xff0c;日志表每天都在增大#xff0c;最后超过阈值触发空间使用率告警。DBA 处理空间告警时… 文章目录 前言1. 环境准备1.1 模拟造数1.2 工具安装 2. 删除数据2.1 批次删除表2.2 原理解析2.3 批处理思路 后记 前言 在线核心业务都会有日志表随着业务持续运行日志表每天都在增大最后超过阈值触发空间使用率告警。DBA 处理空间告警时会先导出一份表大小信息然后发给研发确认哪些表是可以清理些数据的让研发先清理。如果没有清理空间就需要提审批扩容。 如果有数据可以清理又分为 删库、清空表、删除表中部分数据 三种情况。前两种可以直接使用 MySQL 命令处理第三种通常需要研发写一个任务批量删除切忌不能直接 DELETE FROM xxxx 一张大表或者一次删几千万的数据这样会造成集群出现很大的延迟而且会产生一个巨大的 Binlog 文件以及更多的锁争用情况。 本篇文章将为介绍如何使用 pt-archiver 分批清理表中的数据以及写批次任务的思路。 1. 环境准备 1.1 模拟造数 接下来模拟删除一张日志表的场景以下是表结构。 CREATE TABLE order_operation_log (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT ID,order_id bigint(20) DEFAULT NULL COMMENT 订单号,order_num varchar(16) DEFAULT NULL COMMENT 商品订单号,operation_before varchar(500) COMMENT 操作前,operation_after varchar(500) COMMENT 操作后,operator_id bigint(20) NOT NULL DEFAULT 0 COMMENT 操作人id,operator_name varchar(30) NOT NULL DEFAULT COMMENT 操作人姓名,operation_remark varchar(255) DEFAULT NULL COMMENT 操作备注,created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 COMMENT订单操作日志表为该表制造 1000w 行数据如何造数可参考我之前的文章。 推荐阅读MySQL 快速造数 mysql_random_data_load -h127.0.0.1 -uroot -pabc123 --max-threads10 test order_operation_log 100000001.2 工具安装 本篇文章的主角 pt-archiver 包含在 Percona Toolkit 中安装方法往期文章有介绍。 推荐阅读Percona Toolkit 工具集安装 pt-archiver --version pt-archiver 3.3.12. 删除数据 使用 pt-archiver 分批删除表中数据生产环境推荐一次删除 2w 行避免造成较大的主从延迟。 2.1 批次删除表 该命令表示删除 test 库下 order_operation_log 表全部数据每次删除 1000 行。 pt-archiver --source h127.0.0.1,P3306,uroot,pabc123,Dtest,torder_operation_log --where id 200000 --bulk-delete --limit 20000 --charset utf8 --progress 100000 --purge --commit-each重要参数解释 –source表示源实例信息后面 h、P、u、p、D、t 分别表示主机地址、端口、用户、密码、数据库名、表名。–where过滤条件删除全表 11删除部分数据可按需指定。–bulk-delete指批量删除。–limit每次批量的处理的行数。–commit-each对于每批数据只提交一次。–charset连接数据库使用的字符集。–progress进度打印删除多少行打印一次进度。–purge表示只删除数据。–sleep处理一批数据后等待几秒后再继续执行。 2.2 原理解析 开启 general_log 日志可以更直观的看到 pt-archiver 执行过程。 # 测试使用limit 指定为 10 pt-archiver --source h127.0.0.1,P3306,uroot,pabc123,Dtest,torder_operation_log --where id 200000 --bulk-delete --limit 10 --charset utf8 --progress 100000 --purge --commit-each# 设置会话 autocommi 0 每个操作需要用户 commit 提交事务 set autocommit0# 进入目标表查看表结构这里会选择主键或者唯一键作为分批处理的过滤条件。 USE test SHOW CREATE TABLE test.order_operation_log# 确认 id 字段为过滤条件获取 id 最大值 SELECT MAX(id) FROM test.order_operation_log# 该步骤的目的是获取 id 主键删除范围的最大值和最小值 SELECT /*!40001 SQL_NO_CACHE */ id,order_id,order_num,operation_before,operation_after,operator_id,operator_name,operation_remark,created_at,updated_at FROM test.order_operation_log FORCE INDEX(PRIMARY) WHERE (id 200000) AND (id 4940000) ORDER BY id LIMIT 10# 基于查询查到的主键最大值和最小值进行删除 DELETE FROM test.order_operation_log WHERE (((id 109853))) AND (((id 109862))) AND (id 200000) LIMIT 10# 提交事务 commit# 执行第二次获取主键的最大值和最小值 SELECT /*!40001 SQL_NO_CACHE */ id,order_id,order_num,operation_before,operation_after,operator_id,operator_name,operation_remark,created_at,updated_at FROM test.order_operation_log FORCE INDEX(PRIMARY) WHERE (id 200000) AND (id 4940000) AND ((id 109862)) ORDER BY id LIMIT 10# 执行删除 DELETE FROM test.order_operation_log WHERE (((id 109863))) AND (((id 109872))) AND (id 200000) LIMIT 10# 提交事务 commit2.3 批处理思路 在业务代码中如果有类似需求也可以借鉴 pt-archiver 的实现方式。不过在获取最大值最小值时可不必返回所有数据。 以下是模拟的过程由于用于测试我们使用的是 limit 10一般生产可一批删除 2w 行。 -- 开启事务 begin -- 获取范围 SELECT /*!40001 SQL_NO_CACHE */ min(id), max(id) from (SELECT id FROM test.order_operation_log FORCE INDEX(PRIMARY) WHERE (id 200000) AND (id 4940000) ORDER BY id LIMIT 10) as tmp;输出结果 ------------------ | min(id) | max(id) | ------------------ | 111103 | 111112 | ------------------按照范围执行删除 -- 执行删除 DELETE FROM test.order_operation_log WHERE (((id 111103))) AND (((id 111112))) AND (id 200000) LIMIT 10 -- 提交事务 commit得到结果 Query OK, 10 rows affected (0.01 sec)后记 MySQL 使用 DELETE 删除数据并不会完成删除而是打上删除标记会出现碎片空间。如果要完全释放空间需要重建表收缩空间碎片。 -- 低峰执行下方 SQL 即可收缩空间碎片支持 online DDL alter table table_name force, ALGORITHMINPLACE, LOCKNONE
http://www.pierceye.com/news/504834/

相关文章:

  • 重庆网站seo搜索引擎优化网站qq登录 开发
  • 备案号放网站下面居中物流网站制作目的
  • 房产网站排名做情侣网站
  • 营销型网站建设推荐国内团购网站做的最好的是
  • 前端网站建设苏州高新区建设局网站管网
  • 中小企业网站建设中服务器的解决方案是网站建设推广总结
  • 东莞网站建设新闻资讯做赌场网站犯法么
  • wordpress怎么添加单页模版seo价格是多少
  • 网站域名有了_网站如何建设优书网首页
  • 宠物网站建设策划报告Wordpress is文章展示
  • 电子建设网站的目的阿里巴巴网站是用什么技术做的
  • 图形设计网站wordpress微信群多个二维码
  • 网站建设维护是干什么网站用户需求报告
  • 咸宁网站建设公司水网站模板
  • 移动网站开发教材seo网站排名优化价格
  • 重生做网站小说畅想网络网站建设推广
  • 找个做网站的 优帮云wordpress 判断自定义栏目
  • wordpress文章目录分页wordpress加速优化服务
  • 二级目录网站怎么做小程序开发成都公司
  • 网站标题名字和备案名字网站开发 质量管理
  • 网站与系统开发吉安网站建设收费
  • 湖北襄阳网站建设wordpress电商ar
  • 微做网站环保行业网站建设
  • 昭通做网站公司北京手机网站制作多少钱
  • 昆明企业建网站多少钱如何弄微信小程序
  • wordpress清理网站缓存做的比较简约的网站
  • 青岛高端网站制作中铁建设集团门户密码
  • 公司专业做网站做网站域名起什么作用
  • 推广型网站建设机构如何创建wordpress
  • 做网站交互demo工具在线设计自己的签名免费