单库单表Mysql-canal/maxwell-kafka测试

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

一、测试概述

本测试旨在评估三种数据同步工具(Canal、Maxwell、Debezium)在MySQL到Kafka场景下的性能表现。通过模拟企业股东关系数据的生成和同步过程,测试并对比以下核心指标:

  • 数据插入性能:MySQL批量插入速度
  • 同步延迟:数据从MySQL到Kafka的时间差
  • 数据完整性:源端与目标端数据一致性
  • 吞吐量:Kafka消费处理能力
  • 主从延迟:MySQL主从复制延迟
系统架构图

在这里插入图片描述

二、测试环境配置

2.1 数据库层

角色IP地址版本备注
MySQL Masterxx.xx.xx.xxx5.7.44主数据库
MySQL Slavexx.xx.xx.xxx5.7.44从数据库(监控延迟)

2.2 数据同步层

工具版本部署节点
Canal1.1.8xx.xx.xx.xx
Maxwell1.41.2xx.xx.xx.xx

2.3 Kafka集群

节点IP地址版本
Broker1xx.xx.xx.xx14.0.0
Broker2xx.xx.xx.xx24.0.0
Broker3xx.xx.xx.xx34.0.0

2.4 测试表结构

CREATE TABLE IF NOT EXISTS mydb.dwd_essential_info_shareholder_info (
    id VARCHAR(255) COMMENT '唯一id',
    firm_eid VARCHAR(255) COMMENT '企业eid',
    firm_id VARCHAR(255) COMMENT '企业id',
    firm_name VARCHAR(255) COMMENT '企业名称',
    usc_code VARCHAR(255) COMMENT '统一社会信用代码',
    reg_no VARCHAR(255) COMMENT '注册号',
    org_code VARCHAR(255) COMMENT '组织机构代码',
    sha_name VARCHAR(255) COMMENT '股东名称',
    sha_type VARCHAR(255) COMMENT '股东类型',
    sha_id_type VARCHAR(255) COMMENT '股东证件类型',
    sha_id_no VARCHAR(255) COMMENT '股东证件号码',
    sha_id VARCHAR(255) COMMENT '股东id',
    hold_ratio DECIMAL(18,6) COMMENT '持股比例',
    should_cap_items TEXT COMMENT '认缴出资明细(JSON格式)',
    cumulative_amt DECIMAL(18,6) COMMENT '累计认缴额',
    cumulative_amt_cur VARCHAR(255) COMMENT '累计认缴币种',
    real_cap_items TEXT COMMENT '实缴出资明细(JSON格式)',
    acc_real_cap DECIMAL(18,6) COMMENT '累计实缴额',
    acc_real_cap_cur VARCHAR(255) COMMENT '累计实缴币种',
    sha_start_date DATE COMMENT '开始参股时间',
    sha_end_date DATE COMMENT '股东退出时间',
    country VARCHAR(255) COMMENT '国别',
    is_history INT COMMENT '是否历史',
    hold_ratio_source INT COMMENT '股比数据来源',
    local_row_update_time TIMESTAMP COMMENT '数据更新时间',
    is_delete INT COMMENT '是否删除',
    partition_date VARCHAR(8) COMMENT 'yyyyMMdd',
    test_timestamp BIGINT COMMENT '毫秒级时间戳'  
);

三、测试方式

3.1 测试流程

  1. 数据生成:使用 python_test_mysql.py 生成测试数据
  2. 全链路测试:运行 run_all.py 进行综合评估
  3. 工具专项测试:
    • Canal测试: test_canal.py
    • Maxwell测试: test_maxwell.py
  4. Kafka性能测试: test_kafka.py

3.2 测试指标

指标类别具体指标
MySQL性能插入速度、单条插入耗时、主从延迟
同步延迟平均延迟、最大/最小延迟
数据一致性MySQL与Kafka记录数比对
Kafka性能生产/消费吞吐量、消息处理延迟

四、 测试脚本实现

4.1 数据生成脚本 ( python_test_mysql.py )

核心代码如下:

def generate_test_data(num_records: int = 10):
    # 连接MySQL主库
    master_conn = pymysql.connect(**MASTER_CONFIG)
    
    # 清空测试表并重建
    master_cursor.execute("TRUNCATE TABLE mydb.dwd_essential_info_shareholder_info")
    master_cursor.execute(CREATE_TABLE_SQL)
    
    # 生成企业股东关系数据
    for i in range(num_records):
        # 生成企业信息
        company_id = str(uuid.uuid4())
        # 生成股东信息(企业/自然人)
        is_company = random.choice([True, False])
        shareholder_type = "企业" if is_company else "自然人"
        # 构造数据记录
        row = (...)
        batch_values.append(row)
        
        # 每1000条监控主从延迟
        if (i + 1) % 1000 == 0:
            monitor_replication_lag()
            
    # 批量插入数据
    master_cursor.executemany(insert_sql, batch_values)
    
    # 计算性能指标
    total_time = time.time() - start_time
    print(f"平均插入速度: {inserted_count / total_time:.2f} 条/秒")

4.2 全链路测试脚本 ( run_all.py )

核心代码如下:

def parse_arguments():
    parser = argparse.ArgumentParser(description='全链路性能测试')
    parser.add_argument('--num_records', type=int, default=10000, help='测试数据量')
    parser.add_argument('--batch_size', type=int, default=1000, help='批量插入大小')
    parser.add_argument('--kafka_topic', type=str, default='canal_test', help='Kafka主题')
    return parser.parse_args()


def main():
    args = parse_arguments()
    
    # 1. 生成测试数据
    print("开始生成测试数据...")
    generate_test_data(args.num_records)
    
    # 2. 启动Canal/Kafka消费者
    print("启动Canal/Kafka消费者...")
    start_canal_consumer()
    
    # 3. 测量端到端延迟
    print("测量端到端延迟...")
    measure_end_to_end_latency()
    
    # 4. 验证数据一致性
    print("验证数据一致性...")
    verify_data_consistency()

4.3 Canal专项测试 ( test_canal.py )

核心代码如下:

def test_canal_data_integrity():

​    # 获取MySQL记录数

​    cursor.execute("SELECT COUNT(*) FROM dwd_essential_info_shareholder_info")

​    mysql_count = cursor.fetchone()[0]

​    

​    # 消费Kafka消息

​    consumer = KafkaConsumer('canal_topic4', ...)

​    for message in consumer:

​        payload = json.loads(message.value)

​        if payload.get('type') == 'INSERT':

​            # 计算延迟

​            latency = time.time()*1000 - record['test_timestamp']

​            latencies.append(latency)

​            msg_count += 1

​    

​    # 输出结果

​    print(f"数据一致性: {'通过' if mysql_count == msg_count else '失败'}")

​    print(f"平均延迟: {sum(latencies)/len(latencies):.2f} ms")

4.4 Kafka性能测试 ( test_kafka.py )

核心代码如下:

def test_kafka_consumer_success(sync_mechanism):

​    # 创建主题
​    create_kafka_topic(TOPIC_MAP[sync_mechanism])

​    # 消费性能测试

​    consumer = KafkaConsumer(...)

​    start_time = time.time()

​    for msg in consumer:

​        # 实时计算吞吐量

​        elapsed = time.time() - start_time

​        throughput = consumed_messages / elapsed

​    # 输出结果

​    print(f"消费成功率: {(consumed_messages/total_messages)*100:.2f}%")

​    print(f"平均吞吐量: {throughput:.2f} 条/秒")

def test_kafka_producer_performance():

​    # 生产者性能测试

​    for i in range(1000):

​        start = time.time()

​        future = producer.send(...)

​        metadata = future.get()

​        latency = (time.time() - start)*1000

​        # 统计延迟指标

4.4 Flink测试

4.4.1 创建目录

在flink-job文件目录下创建文件

# 进入项目根目录
cd /opt/flink-job

# 创建标准 Maven 目录
mkdir -p src/main/java
mkdir -p src/main/resources

创建完成后如图片所示
在这里插入图片描述
在这里插入图片描述

4.4.2 编写CanalKafkaConsumer.java文件

在java目录下创建文件CanalKafkaConsumer.java

vi CanalKafkaConsumer.java

文件内容

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import java.util.Properties;

public class CanalKafkaConsumer {
    public static void main(String[] args) throws Exception {
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        // Kafka配置
        Properties props = new Properties();
        props.setProperty("bootstrap.servers", "xx.xx.xx.xx1:9092,xx.xx.xx.xx2:9092,xx.xx.xx.xx3:9092");
        props.setProperty("group.id", "flink-canal-group");
        // 消费canal_topic4
        FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>(
            "canal_topic4",
            new SimpleStringSchema(),
            props
        );
        consumer.setStartFromEarliest(); // 从最早位置消费
        // 处理逻辑(这里仅打印,可根据需求修改)
        env.addSource(consumer).print();
        env.execute("Flink YARN Consumer (canal_topic4)");
    }
}

4.4.3 编写文件pom.xml

在flink-job文件目录下编写文件pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>flink-kafka-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <!-- 确保Flink版本与集群一致 -->
        <flink.version>1.14.0</flink.version>
        <kafka.version>2.8.1</kafka.version>
        <java.version>1.8</java.version>
        <scala.binary.version>2.12</scala.binary.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- Flink 核心依赖 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <scope>provided</scope>
        </dependency>

4.4.4 生成jar包

在flink-job目录下执行

cd /opt/flink-job/
mvn package -Dmaven.test.skip=true

将jar包放到/opt/目录下

cp target/flink-kafka-consumer-1.0-SNAPSHOT-jar-with-dependencies.jar /opt/FlinkKafkaConsumer.jar

4.4.5 编写测试代码

在run_all.py文件中编写核心代码:

def submit_flink_yarn_job():
    """通过带密码的SSH提交Flink任务到YARN集群,消费canal_topic4"""
    # 配置信息(需根据实际环境修改)
    YARN_PASSWORD = "xxxxxx"
    flink_jar_path = "/opt/FlinkKafkaConsumer.jar"
    flink_bin_path = "/opt/flink/bin"  # 移除末尾多余的斜杠,避免路径拼接问题
    # 构造带密码的SSH命令:先加载环境变量,再提交Flink任务到YARN集群
    # 关键改进:添加 source /etc/profile 确保HADOOP_CLASSPATH生效
    cmd = [
        "sshpass", "-p", YARN_PASSWORD,
        "ssh", "-o", "StrictHostKeyChecking=no",
        "root@xx.xx.xx.xxx",
        # 使用双引号包裹远程执行的命令,确保source和flink命令在同一shell会话中执行
        f"source /etc/profile && {flink_bin_path}/flink run -m yarn-cluster {flink_jar_path}"
    ]
    logging.info(f"提交Flink任务到YARN:{' '.join(cmd)}")
    try:
        # 执行命令并实时输出日志
        process = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            universal_newlines=True
        )
        for line in iter(process.stdout.readline, ''):
            logging.info(f"Flink YARN: {line.strip()}")
        process.wait()
        if process.returncode == 0:
            logging.info("Flink任务提交成功")
            return True
        else:
            logging.error(f"Flink任务提交失败,返回码: {process.returncode}")
            return False
    except Exception as e:


#在main核心代码中添加
if __name__ == "__main__":

​    parser = argparse.ArgumentParser(description='全链路性能测试(含关键时间打印)')
​    parser.add_argument('--num_records', type=int, default=10000)
​    parser.add_argument('--sync_mechanism', type=str, default='canal',
​                        choices=['canal', 'maxwell', 'debezium'])
​    args = parser.parse_args()

​    print("="*70)
​    print(f"🚀 开始全链路性能测试 | 机制: {args.sync_mechanism} | 数据量: {args.num_records}")
​    print("="*70)
​    create_kafka_topic(TOPIC_MAP[args.sync_mechanism])
​    run_script('python_test_mysql.py', ['--num_records', str(args.num_records)])

​    # 统一入口:吞吐量和Kafka关键时间
​    calculate_throughput_and_kafka_time(args.sync_mechanism)

​    # 根据机制计算延迟
​    if args.sync_mechanism == 'maxwell':
​        calculate_maxwell_latency()
​    else:
​        calculate_canal_latency(args.sync_mechanism)
​    run_mysql_performance_test()
​    run_kafka_performance_test(args.sync_mechanism)

​    if args.sync_mechanism == 'canal':
​        print("\n" + "="*50)
​        print("📡 开始提交Flink on YARN任务消费canal_topic4")
​        print("="*50)
​        submit_flink_yarn_job()
​    print("\n" + "="*70)
​    print("🏁 全链路性能测试完成!")
​    print("="*70)
# 五、 测试执行示例
## 5.1 执行全链路测试(10,000条记录):
```bash
python run_all.py --num_records 10000 --sync_mechanism canal

使用canal进行测试时,若之前有测试过,则需要删除之前测试创建的topic,例如如下命令(kafka主节点运行)

./bin/kafka-topics.sh --bootstrap-server xx.xx.xx.xx:9092 --delete --topic canal_topic4

在运行如下命令(kafka主节点运行)

./bin/kafka-console-consumer.sh --bootstrap-server xx.xx.xx.xx:9092 --topic canal_topic4 --from-beginning

同理maxwell的相关测试一致

python run_all.py --num_records 10000 --sync_mechanism maxwell

5.2 测试输出示例:

============================================================

🚀🚀 开始全链路性能测试 | 机制: canal | 数据量: 10000

============================================================

[OK] 数据插入完成! 共插入 10000 条数据

⏱⏱⏱️ 总耗时: 3250.22毫秒

🚀🚀 平均插入速度: 3076.92 条/秒

📊📊 CANAL 吞吐量 & Kafka关键时间

============================================================

有效消息数: 10000

时间跨度: 2800.00 ms

📈📈 平均吞吐量: 3571.43 条/秒

🕒🕒🕒 Kafka第一条消费时间: 2025-07-29 14:05:30 (1722233130000)

🕒🕒🕒 Kafka最后一条消费时间: 2025-07-29 14:05:33 (1722233133000)

📊📊 CANAL 平均延迟: 52.37 ms,有效消息: 10000

🗄🗄️ MYSQL 插入性能结果 & 关键时间

============================================================

📊📊 插入消息数: 10000

⏱⏱⏱️ 总耗时: 3250.22 ms

⏱⏱⏱️ 平均每条耗时: 0.33 ms

🕒🕒🕒 第一条插入MySQL时间: 2025-07-29 14:05:30 (1722233130000)

🕒🕒🕒 最后一条插入MySQL时间: 2025-07-29 14:05:33 (1722233133000)

🚀🚀 KAFKA 消费性能结果

============================================================

📊📊 消费消息数: 10000

⏱⏱⏱️ 总耗时: 2100.50 ms

⏱⏱⏱️ 平均每条耗时: 0.21 ms

============================================================

🏁🏁 全链路性能测试完成!

============================================================

六、测试结果如下

6.1 canal默认配置下的测试结果

在这里插入图片描述

6.2 canal优化配置测试结果(一)

修改配置文件的内容如下

# 提升并行处理能力
canal.instance.parser.parallelThreadSize = 16

# 增大内存缓冲区
canal.instance.memory.buffer.size = 65536      # 64K 条目 (4倍提升)
canal.instance.parser.parallelBufferSize = 1024  # 1024 条目 (4倍提升)

# 优化 Kafka 生产者配置
kafka.batch.size = 32768      # 32KB (增大批处理量)
kafka.linger.ms = 20          # 适当等待聚合更多数据
kafka.acks = 1                # Leader确认即可 (降低可靠性提升吞吐)

在这里插入图片描述

6.3 canal优化配置测试结果(二)

修改配置文件的内容如下

# 并行解析线程启用
canal.instance.parser.parallelThreadSize = 16 

# Kafka 压缩类型修改
kafka.compression.type = lz4

在这里插入图片描述

6.4 maxwell默认配置测试结果

在这里插入图片描述

6.5 maxwell优化配置测试结果

修改配置文件的内容如下

producer_kafka_acks=all          # 需要所有ISR副本确认
producer_kafka_retries=10        # 失败时重试次数
producer_kafka_enable_idempotence=true # 启用幂等性(防止消息重复)
producer_kafka_max_in_flight_requests_per_connection=5

在这里插入图片描述

SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档) 本文介绍一套基于SpringBoot+Vue+MySQL的民宿在线预订平台,涵盖用户与管理员双角色全流程功能,实现房源展示、订单管理、支付模拟、数据看板等闭环业务。系统架构清晰,前后端分离,附带完整源码、数据库脚本、万字论文、答辩PPT及部署文档,适合毕设、课程设计或小型民宿二次开发,开箱即用,快速落地。 阅读详情

相关推荐

详解k-means++

一、概述 定义:k-means++是一种为k-means聚类算法选择初始值(或“种子”)的算法。它是NP-hard k-means问题的一种近似算法,它是一种避免标准k-means算法有时发现的较弱聚类的方法。 K-means与K-means++:原始K-means算法最开始随机选取数据集中K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚

qq_42364307的博客 3万+

MySQL 索引深入理解:B+ 树、二级索引、联合索引与查询优化

理解二级索引后,就可以理解回表了。SELECT *MySQL 的执行过程分为三个步骤。覆盖索引(Covering Index)并不是一种独立的索引类型,而是一种查询效果。SQL 查询需要的所有字段,都能够直接从某个索引中获得,不需要再访问聚簇索引获取其他字段。例如:因为user_id已经包含在二级索引中,所以 MySQL 可以直接返回结果。不需要回表。联合索引(Composite Index)是同时使用多个字段建立的索引。它的排序规则是:首先按照user_id排序。当user_id。

m0_64642997的博客 139

从零到一:用ROS2和Gazebo搭建Franka机械臂仿真环境(避坑指南)

本文详细介绍了如何使用ROS2和Gazebo从零开始搭建Franka机械臂的仿真环境,包括环境准备、ROS2包安装、控制器配置及常见问题解决方案。特别针对关节位置控制等核心功能提供了实用代码示例和避坑指南,帮助开发者高效构建机器人算法验证平台。

weixin_29061465的博客 461

Flink SQL 连接器实战:MySQL Source、Flink CDC 与 JDBC Sink 全解析

提供有界流读取,适合批处理和维表场景,简单直接但无法感知变更。MySQL CDC提供无界流读取,通过「全量快照 + binlog 增量」的方式实现实时捕获,是实时数仓的核心入口,但需要 MySQL 侧正确配置 binlog 和权限。JDBC Sink负责结果回写,关键在于区分仅插入流和更新流,更新流必须依赖主键完成 upsert。掌握这三者的差异,本质上就是掌握了 Flink 中「有界与无界」「追加与更新」这两组最基本的语义。

2401_83857914的博客 466

Qwen3.5在昇腾NPU上部署:vLLM-Ascend全链路实战

大语言模型推理框架(如vLLM)通过PagedAttention等内存调度机制,显著提升显存利用率与吞吐性能;国产AI芯片(如昇腾NPU)需配套专用算子优化与硬件感知调度才能释放真实算力。本文聚焦Qwen3.5大语言模型在昇腾平台的端到端部署,深入解析vLLM-Ascend如何协同CANN工具链、适配RoPE位置编码与Tokenizer映射、调优block_size与kv_cache_dtype等关键参数,实现单卡42 tokens/s高吞吐与112ms低延迟。内容覆盖环境验证、源码编译、模型权重转换、服务

weixin_34335458的博客 280

Linux Wireless之80211(nl80211, cfg80211, mac80211)

Linux Wireless之80211(nl80211, cfg80211, mac80211)前言在Linux无线子系统中,cfg80211、mac80211和nl80211是三个关键的组件,它们共同工作以实现对802.11设备的配置和管理。cfg80211负责内核空间的通用API,mac80211负责具体的MAC层实现,而nl80211则作为用户空间与内核空间之间的桥梁,用于配置管理和通信。Netlink 是一个 Linux 中的 socket 类型,用于在内核与用户空间之间传递事件。

DD'Notes 1482

一篇文章讲清 MySQL 索引:聚簇索引、联合索引、回表与 EXPLAIN

以订单查询为例,拆解 InnoDB 聚簇索引与二级索引的存储和回表路径,解释联合索引的列序、覆盖与 ICP,再用 EXPLAIN 判断扫描、排序和优化器选择,给出可复现的排查方法。

qq_74421990的博客 287

别再为域名备案发愁了!微信小程序后端调用,试试这个‘官方捷径’——云托管

本文介绍了微信小程序后端部署的新思路——利用微信云托管服务绕过域名备案难题。通过详细的环境准备、数据库配置、服务部署和小程序端调用方案,帮助开发者快速实现小程序与后端服务的无缝对接,大幅缩短上线周期并降低运维成本。

weixin_29243279的博客 677

MySQL 中 DISTINCT 与 GROUP BY 哪个效率更高?

DISTINCT与GROUP BY在纯去重场景下,MySQL 8.0 中执行计划通常一致,效率基本相同。老版本(8.0.13 之前)GROUP BY有隐式排序开销,DISTINCT往往更快。需要聚合或HAVING时,只能用GROUP BY。效率的真正决定因素是索引和执行计划,而不是这两个关键字本身。所以,与其问「哪个更快」,不如问「我的查询有没有走对索引」。

2601_96709915的博客 331

Gradle进阶:4:结合Sonarqube进行代码审查

作为代码质量检查的流行工具,比如Sonarqube能够检查代码的“七宗罪”,跟代码结合起来能够更好地提高代码的质量,这篇文章将会介绍如何结合gradle和sonarqube对代码质量与测试覆盖率进行分析。

知行合一 止于至善 1万+

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

jacke121的专栏 2706

4. 关系型数据库-MySQL-Canal 进阶

Canal 是基于 MySQL binlog 的增量数据订阅工具,可实现数据库变更的实时捕获。它通过伪装从库订阅 binlog,无需业务代码侵入,支持缓存同步、搜索索引更新、数据异构、实时入仓及汇总宽表增量更新等场景。使用时需开启 ROW 格式 binlog,配置专用账号,并通过 canal-server 接收事件,下游消费者处理后确认。注意 binlog 保留期、正则过滤写法及全量初始化等关键点,避免数据丢失或误判。

princemilo的博客 135

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql常见问题汇总

按「现象 → 排查 → 解法」整理,按事故频率排序。

qq_38636133的博客 180

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于 FastAPI+LangChain+LangGraph+Agent+Vue3+MySQL 的房产数据采集与房价预测分析平台

本文介绍一个完整的「房产数据采集+AI房价预测」全栈项目,涵盖FastAPI异步后端、LangGraph Agent智能问答、爬虫采集、机器学习预测与Vue3前端,实现从数据采集到AI交互的闭环。项目融合多技术栈,具备真实业务场景与生产级设计(如降级策略、流式输出、多模型对比),兼具简历亮点与答辩演示优势,可系统性提升工程能力,并附高频面试题解析,是理想的技术综合实践项目。

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 244

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MySQL 8.0 双向主从复制故障修复与重建指南

MySQL 8.0 双向主从复制故障修复 SOP:XtraBackup 重建备用节点,解决 GTID 1236 / 历史日志冲突

「YYL DBA手记」 数据库 · 架构 · 运维 · 实战 yyldba.blog.youkuaiyun.com 307

MySQL 事务:转账中途断电,钱为什么没有丢

本文系统讲解 MySQL 事务的原理与实践:以转账场景引入原子性、一致性、隔离性、持久性四大保证,剖析脏读、不可重复读、幻读三类并发异常与四个隔离级别的取舍,解读 undo log、redo log、锁与多版本并发控制的底层实现,并给出事务粒度控制与异常回滚的编码建议。

大模型全栈工程师 · Thanks_ks 293

MySQL:库与表的操作

本文系统讲解MySQL库的操作,涵盖创建、查看、修改、删除数据库及字符集、校验规则的配置与影响。重点说明CREATE DATABASE语法、字符集(如utf8mb4)与校验规则(如utf8_general_ci vs utf8_bin)对大小写敏感性和排序的影响。通过实例演示不同校验规则下查询与排序结果差异。同时介绍SHOW DATABASES、USE、ALTER DATABASE、DROP DATABASE等操作,并强调备份恢复(mysqldump)与连接状态监控(SHOW PROCESSLIST)的重要

2401_87306079的博客 327

MySQL 主从复制进阶(2026):GTID、复制延迟排查与故障切换

load 高到底是 CPU 还是 IO?free 的 available 才是关键。us/sy/wa 决策树 + iostat/sar/iftop 实战,CPU/内存/磁盘/网络四大瓶颈定位方法论。

2502_91473995的博客 183

任务4-1 了解MySQL的数据类型

本文梳理了MySQL数据类型:数值型涵盖整型与实型,金额首选DECIMAL;字符串型按长度与用途分为CHAR、VARCHAR、TEXT及BLOB;日期型包含DATE、TIME、DATETIME及TIMESTAMP;特殊类型有ENUM、JSON等。掌握类型特性是高效建表的基础。

howard2005的专栏 150

MySQL 为什么选择 B+ 树作为索引结构

B 树和 B+ 树都是多路平衡树,但 B+ 树在数据库场景下更有优势,主要体现在以下几个方面。对比对象主要问题B+ 树的优势二叉树 / 红黑树树高过大,I/O 次数多多路平衡,树高仅 3~4 层哈希表不支持范围查询、排序天然有序,支持范围与排序B 树节点存数据,扇出小;查询路径不一致非叶子只存键,扇出大;查询路径稳定B+ 树用更矮的树高减少磁盘 I/O,用有序的叶子链表支撑范围查询,用只存键的非叶子节点换取更大的扇出,是磁盘数据库索引场景下综合表现最优的选择。

2601_96129122的博客 323

MYSQL-多表设计

在项目开发中,在进行各个数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构。由于业务之间相互关联,所有各个表结构之间也存在各种联系。

weixin_61074074的博客 154

微服务架构下的MySQL设计实战

微服务架构下的 MySQL 交付,核心不是追求最先进的技术方案,而是建立一套边界清晰、可评审、可监控、可回滚的规范体系。分库分表解决容量与写入扩展,读写分离解决读扩展,索引优化与慢查询治理解决日常性能问题,变更管控与备份容灾守住交付底线。把这些实践嵌入需求评审、开发自测、测试压测、上线灰度、运维巡检的每个环节,并明确各自的适用边界与常见误区,才能真正让数据库成为微服务交付的稳定底座,而不是随时可能引爆的风险点。

流水账 624

mysql初阶--数据库设计

本文系统阐述数据库设计的核心方法论,从范式理论(1NF、2NF、3NF)出发,揭示数据冗余与操作异常的根源,强调3NF为工程实践的最优平衡点。通过E-R图构建实体关系模型,实现从业务需求到表结构的清晰映射。文章厘清类、实体、表三者对应关系,提出“抽象→建模→落地”的设计流程,帮助开发者建立可复用的数据库设计思维框架,避免“拍脑袋”建表的陷阱。

2601_97033068的博客 709

MySQL报Too many open files?句柄耗尽的排查与参数配置

文章讲清 max_connections 与 open_files_limit 两个额度、句柄被谁占走、分区表为什么最容易踩,给出从 error log 到 /proc/pid/limits 的定位顺序与句柄预算算法。

「一个在数据库赛道上边学边分享的学妹」——聚焦国产数据库/信创方向、分享学习笔记、踩坑经验和行业观察。 322

Flink 连接器选型实战:HDFS、Kafka、MySQL 与 Doris 的分层数据架构

连接器选型不是技术炫技,而是对数据特征的准确判断。HDFS承担离线归档与批处理,靠分区和滚动策略控制文件质量。Kafka是实时链路的中枢,靠分区、攒批和事务保证吞吐与一致性。MySQL只做维表和小结果集,靠缓存和限流保护在线库。Doris承接大数据量分析写入,靠分桶、攒批和两阶段提交保证性能与准确。把这四者按数据规模、延迟要求和一致性要求分层组合,就能搭出一套既稳定又可扩展的 Flink 数据架构。

2401_83857914的博客 830
上一篇: Debezium部署
下一篇: paimon部署(1.1.1)
wangyutian5u
博客等级 码龄4年 94粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值