mysql建表及数据重刷对比

2023-12-30 00:28

本文主要是介绍mysql建表及数据重刷对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.  mysql 设置及优化

通过某一台安装mysql环境的机器,进入mysql客户端:

mysql -h host -u root -P port -p password db_name
mysql -h17.9.9.16 -uroot -P3306 -proot finger_print

注意:mysql时区设置的是utc,数据库默认字符集是utf8mb4。

1. 设置最大连接数:

使用数据库连接池,设置20-100个连接即可(每日调用20W,qps=40)。

2. mysql还能优化的地方:

1. 分表:gk, hv, 设备信息分表;
2. hash存储成数字而非text;
3. hash长度256降低64;

2. mysql数据库建表

1. 指纹数据库表

CREATE DATABASE finger_print;  -- 创建指纹库CREATE TABLE `xx_device_fingerprint_gk` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 id',`fid` bigint(20) DEFAULT NULL COMMENT '指纹 ID',`gk1` bigint(20) DEFAULT NULL,`gk50` bigint(20) DEFAULT NULL,`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='设备指纹中间表';-- 创建索引
CREATE INDEX fid_inx ON xx_device_fingerprint_gk (fid);
CREATE INDEX gk1_inx ON xx_device_fingerprint_gk (gk1);
CREATE INDEX gk35_inx ON xx_device_fingerprint_gk (gk35);
CREATE INDEX update_time_inx ON xx_device_fingerprint_gk (update_time);
-- 查看索引
show index from xx_device_fingerprint_gk;

2.  指纹查找结果表

CREATE TABLE `xx_device_fingerprint_report_info_ext` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 id',`msg_id` varchar(64) DEFAULT NULL COMMENT '消息数据 id, 唯一',`msg_upload_time` varchar(20) DEFAULT NULL COMMENT '报文上次时间',`fid` bigint(20) DEFAULT NULL COMMENT '指纹ID',`code` bigint(20) DEFAULT NULL COMMENT '请求返回状态(0:成功,其他:失败)',`res1` varchar(50) DEFAULT NULL COMMENT '结果',`res10` varchar(50) DEFAULT NULL COMMENT '结果',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='设备报文信息结果表'
;
CREATE INDEX fid_inx ON xx_device_fingerprint_report_info_ext (fid);
CREATE INDEX msg_id_inx ON xx_device_fingerprint_report_info_ext (msg_id);
CREATE INDEX update_time_inx ON xx_device_fingerprint_report_info_ext (update_time);

3. 加工特征表

CREATE TABLE `xx_device_fingerprint_tongdun_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 id',`msg_id` varchar(64) DEFAULT NULL COMMENT '消息数据 id, 唯一',`fid` bigint(20) DEFAULT NULL COMMENT '指纹ID',`Apply_at_suspicous_time` varchar(50) DEFAULT NULL COMMENT '敏感时间段申请',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='设备报文特征表';CREATE INDEX fid_inx ON xx_device_fingerprint_tongdun_info (fid);
CREATE INDEX msg_id_inx ON xx_device_fingerprint_tongdun_info (msg_id);

4. 指纹hash value 表

3. 部分表的查改删

-- 子指纹命中结果查找
select res1, res2 from xx_device_fingerprint_report_info_ext limit 5;
-- 删除指定指纹ID的记录
delete from xx_device_fingerprint_gk where fid='123';

4. 数据重刷

4.1 TD数据处理与探索

        拿到TD数据,解析,探索,筛选关键因子,设计算法,搭建服务,并下载一份TD数据,预处理成每行一个json的格式。

注意:去除数据,TD id为空等。

4.2 清空测试表

数据重刷时需要先清空数据表

truncate table finger_print.xx_device_fingerprint_gk;
truncate table finger_print.xx_device_fingerprint_report_info_ext;
truncate table finger_print.xx_device_fingerprint_tongdun_info;
truncate table finger_print.xx_device_fingerprint_hv;

然后清空服务日志文件

echo "" > fid_info.log
echo "" > msg_info.log
echo "" > res_info.log
echo "" > user.log

4.3 执行重刷

启动服务,执行批量重刷

4.4  分析处理结果

将fid_info.log上传至hue,并建表分析;

这篇关于mysql建表及数据重刷对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551159

相关文章

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析