事务处理对持久统计信息自动收集的影响

PostgreSQL进程全图解:守护进程、WAL写入器与统计收集器如何协同工作 本文深入解析PostgreSQL的进程协作机制,重点介绍postmaster守护进程如何协调WAL写入器、统计收集器等核心模块的工作流程。通过实战案例展示多进程架构如何实现数据持久化、系统监控和高性能运行,帮助开发者深入理解PostgreSQL体系架构的设计精髓。 阅读详情

事务处理对持久统计信息自动收集的影响

1. 持久化统计信息

持久统计信息将统计信息存储到磁盘,使它们在服务器重启后保持不变,优化器更有可能在查询时做出一致的选择,从而提高执行计划的稳定性。

在innodb_stats_persistent=ON(默认值)或表定义使用 stats_persistent=1时,优化器统计信息会持久化保存。

持久统计信息存储在 mysql.innodb_table_stats 和 mysql.innodb_index_stats 表中,last_update 列可以看到上次更新统计信息的时间。

系统变量innodb_stats_auto_recalc(默认ON)控制表行更改超过10%时,是否自动计算统计信息。也可以通过创建或更改表时指定stats_auto_recalc子句为单个表配置自动统计重新计算。

由于自动统计信息收集是一个后台线程,其处理过程与DML操作是异步的,在DML操作超过 10% 的表后,可能不会立即重新计算统计信息。在某些情况下,统计数据重新计算可能会延迟几秒钟。如果立即需要最新的统计信息,执行 ANALYZE TABLE 以启动统计信息的同步计算。

事务的 commit 和 rollback 会影响统计信息的自动收集么?通过下面测试,可以回答这问题。

2. 测试commit和rollback对持久统计信息收集的影响

测试环境的系统变量值:

greatsql> SHOW GLOBAL VARIABLES LIKE 'innodb_stats%';
+--------------------------------------+-------------+
| Variable_name                        | Value       |
+--------------------------------------+-------------+
| innodb_stats_auto_recalc             | ON          |
| innodb_stats_include_delete_marked   | OFF         |
| innodb_stats_method                  | nulls_equal |
| innodb_stats_on_metadata             | OFF         |
| innodb_stats_persistent              | ON          |
| innodb_stats_persistent_sample_pages | 20          |
| innodb_stats_transient_sample_pages  | 8           |
+--------------------------------------+-------------+

2.1 INSERT 操作

greatsql> TRUNCATE TABLE test1;
Query OK, 0 rows affected (0.05 sec)

-- 开启事务,在空表test1中插入10万行数据
greatsql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

greatsql> SELECT now();INSERT INTO test1 SELECT * FROM LIMIT 100000;SELECT now();
+---------------------+
| now()               |
+---------------------+
| 2025-01-07 09:59:19 |
+---------------------+
1 row in set (0.00 sec)

Query OK, 100000 rows affected (2.73 sec)
Records: 100000  Duplicates: 0  Warnings: 0

+---------------------+
| now()               |
+---------------------+
| 2025-01-07 09:59:21 |
+---------------------+
1 row in set (0.00 sec)


-- 事务没有提交,但统计信息已收集
greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:19 | n_diff_pfx01 |         11 |           1 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:19 | n_leaf_pages |          1 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:19 | size         |          1 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:19 | n_diff_pfx01 |         11 |           1 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:19 | n_diff_pfx02 |         11 |           1 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:19 | n_leaf_pages |          1 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:19 | size         |          1 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)

greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:29 | n_diff_pfx01 |      98712 |          20 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:29 | n_leaf_pages |       1371 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:29 | size         |       1379 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | n_diff_pfx01 |      30169 |          20 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | n_diff_pfx02 |     100268 |          20 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | n_leaf_pages |        128 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | size         |        161 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)


-- 回滚事务
greatsql> ROLLBACK;
Query OK, 0 rows affected (2.64 sec)

-- 没有重新收集统计信息,统计信息与表数据不匹配
greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:29 | n_diff_pfx01 |      98712 |          20 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:29 | n_leaf_pages |       1371 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:59:29 | size         |       1379 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | n_diff_pfx01 |      30169 |          20 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | n_diff_pfx02 |     100268 |          20 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | n_leaf_pages |        128 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:59:29 | size         |        161 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)

greatsql> SELECT COUNT(*) FROM test1;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)


-- analyze重新收集统计信息,统计信息才和表数据一致
greatsql> ANALYZE TABLE test1;
+---------------+---------+----------+----------+
| Table         | Op      | Msg_type | Msg_text |
+---------------+---------+----------+----------+
| testdb1.test1 | analyze | status   | OK       |
+---------------+---------+----------+----------+
1 row in set (0.06 sec)

greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 10:01:58 | n_diff_pfx01 |          0 |           1 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 10:01:58 | n_leaf_pages |          1 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 10:01:58 | size         |          1 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 10:01:58 | n_diff_pfx01 |          0 |           1 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 10:01:58 | n_diff_pfx02 |          0 |           1 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 10:01:58 | n_leaf_pages |          1 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 10:01:58 | size         |          1 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)

2.2 DELETE 操作

greatsql> SELECT COUNT(*) FROM test1;
+----------+
| count(*) |
+----------+
|   100000 |
+----------+
1 row in set (0.15 sec)

-- 开启事务,执行delete操作
greatsql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

greatsql> SELECT now();DELETE FROM test1;SELECT now();
+---------------------+
| now()               |
+---------------------+
| 2025-01-07 09:41:36 |
+---------------------+
1 row in set (0.00 sec)

Query OK, 100000 rows affected (1.87 sec)

+---------------------+
| now()               |
+---------------------+
| 2025-01-07 09:41:38 |
+---------------------+
1 row in set (0.00 sec)

-- 在delete开始时,进行了一次统计信息收集
greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:36 | n_diff_pfx01 |      98712 |          20 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:36 | n_leaf_pages |       1371 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:36 | size         |       1379 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:36 | n_diff_pfx01 |      32313 |          20 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:36 | n_diff_pfx02 |      99244 |          20 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:36 | n_leaf_pages |        128 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:36 | size         |        161 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)

-- delete完成一段时间后(约10秒)进行了第二次统计信息收集
greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:46 | n_diff_pfx01 |          0 |          20 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:46 | n_leaf_pages |       1371 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:46 | size         |       1379 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | n_diff_pfx01 |          0 |          20 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | n_diff_pfx02 |          0 |          20 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | n_leaf_pages |        128 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | size         |        161 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)

-- 回滚事务
greatsql> ROLLBACK;
Query OK, 0 rows affected (1.95 sec)

-- 事务回滚后,统计信息与表数据不匹配
greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:46 | n_diff_pfx01 |          0 |          20 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:46 | n_leaf_pages |       1371 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:41:46 | size         |       1379 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | n_diff_pfx01 |          0 |          20 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | n_diff_pfx02 |          0 |          20 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | n_leaf_pages |        128 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:41:46 | size         |        161 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.00 sec)

greatsql> SELECT COUNT(*) FROM test1;
+----------+
| count(*) |
+----------+
|   100000 |
+----------+
1 row in set (0.15 sec)

-- analyze重新收集统计信息,统计信息才和表数据一致
greatsql> ANALYZE TABLE test1;
+---------------+---------+----------+----------+
| Table         | Op      | Msg_type | Msg_text |
+---------------+---------+----------+----------+
| testdb1.test1 | analyze | status   | OK       |
+---------------+---------+----------+----------+
1 row in set (0.08 sec)

greatsql> SELECT * FROM mysql.innodb_index_stats WHERE database_name='testdb1' AND table_name='test1';
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| database_name | table_name | index_name | last_update         | stat_name    | stat_value | sample_size | stat_description                  |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:47:29 | n_diff_pfx01 |      98712 |          20 | id                                |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:47:29 | n_leaf_pages |       1371 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | PRIMARY    | 2025-01-07 09:47:29 | size         |       1379 |        NULL | Number of pages in the index      |
| testdb1       | test1      | k_1        | 2025-01-07 09:47:29 | n_diff_pfx01 |      32332 |          20 | k                                 |
| testdb1       | test1      | k_1        | 2025-01-07 09:47:29 | n_diff_pfx02 |     100051 |          20 | k,id                              |
| testdb1       | test1      | k_1        | 2025-01-07 09:47:29 | n_leaf_pages |        128 |        NULL | Number of leaf pages in the index |
| testdb1       | test1      | k_1        | 2025-01-07 09:47:29 | size         |        161 |        NULL | Number of pages in the index      |
+---------------+------------+------------+---------------------+--------------+------------+-------------+-----------------------------------+
7 rows in set (0.01 sec)

3. 总结

  • 数据量变化大(超过10%)的DML操作会导致2次统计信息收集,一次是DML开始时,一次是DML完成约10秒后。
  • DML操作是否COMMIT提交,不影响统计信息收集。
  • DML操作的rollback回滚,可能造成统计信息与表数据不一致。当大数据DML操作回滚后,可以执行ANALYZE TABLE重新收集表的统计信息。
【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行) 阅读详情

相关推荐

Miniconda3迁移(附图详细过程)

服务器上目录占满,想要将conda迁移到其他目录下的操作方法,详细教程。

2301_77554343的博客 6942

MySQL InnoDB配置统计信息

MySQL InnoDB配置统计信息 配置持久化(Persistent)统计信息参数 配置非持久化(Non-Persistent)统计信息参数 Analyze Table复杂性长度 本文档介绍如何为InnoDB表配置持久性和非持久性统计信息。 持久化统计信息在服务器重新启动时保持不变,从而使执行计划和查询性能更加稳定。持久化统计信息还提供了控制和灵活性以及这些额外的好处: 可以使用i...

风中清淡 3510

Ai数字人直播系统源码部署

虚拟形象定制,直播内容智能生成,多语言支持,智能互动,声音克隆,24 小时不间断直播,多平台直播,智能数据分析,实时情感识别,视频合成,Ai数字人直播系统源码出售,Ai数字人直播系统源码部署实现 AI 数字人 24 小时不间断直播功能是一个较为复杂的任务,涉及到多个方面,如直播流的推送、内容的持续生成、系统的稳定性保障等。以下为你提供一个简化的实现思路和示例代码,借助 Python 结合 FFmpeg 工具来模拟 24 小时不间断直播。

weixin_ggwwsscc的博客 1256

mysql索引统计信息更新_MySQL索引统计信息更新相关的参数

MySQL统计信息相关的参数:1.innodb_stats_on_metadata(是否自动更新统计信息),MySQL 5.7中默认为关闭状态仅在统计信息配置为非持久化的时候生效。也就是说在innodb_stats_persistent 配置为OFF的时候,非持久化存储统计信息的手,innodb_stats_on_metadata的设置才生效。当innodb_stats_on_metadata设...

weixin_36469726的博客 886

6层高速PCB设计实战:BGA布局与阻抗匹配关键解析

本文深入解析6层高速PCB设计中BGA布局与阻抗匹配的关键技术。通过实战经验分享,详细介绍了六层PCB层叠结构的选择与优化、BGA器件布局技巧、阻抗匹配的实战经验以及高速布线技巧,帮助工程师提升PCB设计水平,确保信号完整性和电源完整性。

weixin_28481133的博客 368

5G物理层基础知识

1、关于RB和RE (1) RB(Resource Block,资源块)频率上连续12个子载波,时域上一个slot(时隙,14个ofdm符号) (2) RE(Resource Element,资源单元)频率上一个子载波,及时域上一个ofdm符号 注意:协议规定,5G每个时隙(非扩展CP)的符号数为14个(扩展CP情况下每个时隙有12个符号),而LTE(非扩展CP)每个时隙的符号数为7个。 简单说:一个12X14的方格,大的整个叫一个RB,每一个小块叫一个RE。另外,一个RE可存放一个调制符号(mo.

qq_39074243的博客 2万+

第13期:表统计信息的计算

本篇介绍 MySQL 表如何计算统计信息。表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。 对统计信息的计算分为 非持久化统计信息(实时计算)与 持久化统计信息。 非持久化统计信息 统计信息没有保存在磁盘上,而是频繁的实时计算统计信息; 每次对表的访问都会重新计算其统计信息; 假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。 持久化统计信息 把一张表在某一时刻的统计信息值保存在磁盘上; 避免每次查询时重新.

ActionTech的博客 520

Halcon与C#联合编程(一):使用S7协议实现机器视觉上位机与西门子PLC联动

本项目技术栈:C#基础,多线程,Halcon DirectShow,Halcon形状检测,Halcon QR码识别,西门子S7通讯协议,西门子PLC为核心的下位机及执行元件

虎鲸不是鱼 1万+

MySQL之InnoDB统计数据

背景 通过 show table status 和 show index 可以看到表和索引相关的统计信息,例如表中有多少条记录,索引里有多少重复的, 就像我们平时统计表里的数据一共有多少条等等会通过一些聚合函数去做运算,这种运算好处是很准确,基本是实时的,但是带来的问题就是很慢,数据越大越慢, 因此一些业务场景我们选择将一些统计数据存在一个字段里,通过准实时的计算更新这个字段,每次查询这个字段就可以了,这个带来的问题则是实时准确性有偏差。 同样,mysql不可能查询表中记录一共有多少条要去每一页每一

cainiao1412的博客 2707

【局部路径规划模块地图算法】基于势场地图的VFH、VFH+、VFH*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对基于地图的方法–VFH、VFH+、VFH*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1686

cartographer运行错误集合

播放bag的时候错误 Check failed: sensor_to_tracking->translation().norm() < 1e-5 The IMU frame must be colocated with the tracking frame. Transforming linear acceleration into the tracking frame will otherwise be imprecise tracking frame不是imu的link 修改lua文件中的.

Studying…… 2020

【MySQL篇】持久化和非持久化统计信息的深度剖析(含analyze命令和mysqlcheck工具两种收集方式)

MySQL 统计信息是指数据库通过采样和统计分析得出的表、索引的相关数据,例如表的记录数、聚集索引的页数、字段的基数(Cardinality)等。在生成执行计划时,MySQL 优化器会依赖这些统计信息进行估算,从而选择出代价最低(或开销最小)的执行计划。需要注意的是,MySQL 支持的索引统计信息相对有限,且不同存储引擎收集统计信息的方式也有所不同

奈斯DB的博客 3422

【SystemVerilog基础】SystemVerilog Assertion 概述

断言主要是描述复杂的设计行为;是传统验证方法学一个很好的补充,可以检查到电路内部细节,相当于一种白盒验证,传统的验证方法学是纯粹的黑盒验证!property跟上面的sequence差别不大,唯一有差别可能多了两个implication(|->,|=>)注意,当有前置条件时,不满足前置条件不会fail,而是伪真!上面这个因为没有前置条件,每个周期都会去检查!注意:当没有前置条件时,不满足条件会直接fail!

MoorePlus的博客 333

5个因素帮助你评估YashanDB数据库的适用性

采用基于成本的优化器(CBO),依托丰富的统计信息(如表行数、列直方图、索引层数等),生成更优的执行计划。YashanDB事务支持完整的ACID特性,多版本并发控制(MVCC)有效隔离读写任务,避免读阻塞写,同时保证查询的一致性视图。YashanDB凭借多样化部署架构、丰富的存储结构、有力的SQL优化引擎以及强健的事务和高可用机制,具备广泛应用价值。部署高可用架构时结合数据安全级别选择恰当的保护模式,开启自动选主和故障自动恢复功能,辅以完善的安全认证和权限管控机制。

2501_91591875的博客 884

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

关键指标:如何衡量YashanDB数据库的性能?

YashanDB数据库性能的衡量涵盖广泛的技术指标,涵盖查询响应时间、事务处理效率、存储访问性能、内存利用、后台任务调度及高可用能力等多个方面。本文将系统阐述衡量YashanDB性能的关键指标,涵盖资源利用、查询效率、事务处理能力及系统稳定性等多个层面,帮助技术人员全面评估和优化数据库性能。HEAP行存表适合OLTP场景;合理配置内存参数,优化数据缓存和共享池,保证SQL缓存和数据字典缓存的命中率,减少磁盘I/O。监控锁和事务性能,避免长时间阻塞和死锁,开发和调整DDL操作时间窗,降低对业务并发的影响。

2501_91591875的博客 638

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

5个关键指标评估YashanDB的实施效果

作为采用多种部署形态和先进存储结构的数据库产品,YashanDB在单机、分布式和共享集群环境下的表现直接影响企业IT系统的稳定性和业务响应速度。随着海量数据的持续增长和应用场景的多样化,数据库技术的优化和革新将成为提升企业竞争力的关键。YashanDB内置基于成本的优化器(CBO),结合丰富的统计信息和HINT提示,实现最优执行计划的生成,优化多阶段分布式执行。评估实施效果时,可统计数据压缩率、表空间利用率、存储IO性能和冷热数据划分效果,以及存储层规模扩展的平滑度和透明度,反映存储子系统的实际效率。

2501_91591875的博客 746

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

YashanDB数据库的6个使用技巧提升效率

本文将基于YashanDB的架构特性和核心技术,详细介绍六个实用技巧,帮助数据库管理员和开发人员提升YashanDB的使用效率和业务响应速度。结合数据冷热特性,YashanDB支持自动或手动将数据从MCOL(活跃切片)转换至SCOL(稳态切片),通过后台转换任务无缝迁移数据存储层,确保数据查询与写入性能的动态平衡。访问约束(Access Constraint,AC)是YashanDB独有的基于有界计算理论的数据模型转换机制,通过预计算和数据压缩,从大数据集提取相关子集加速查询。

2501_91591875的博客 745

MySQL笔记系列:MySQL架构

MySQL逻辑架构 连接管理与安全性: 1、MySQL会为每一个客户端连接分配一个线程,这个连接的查询只会在这个单独的线程执行。服务器会负责缓存线程,因此不需要为每一个新建立的连接创建或则销毁线程。 2、当客户端连接到MySQL服务器时,服务器将对其进行身份认证。认证基于用户名、主机信息和密码,也可以基于SSL的方式进行连接。一旦客户端连接成功,服务器会继续验证该客...

weixin_34245749的博客 326

YashanDB的监控与调优:确保数据库高效运作

本文基于YashanDB的体系架构及技术特性,深入剖析数据库的监控机制和性能调优方法,面向数据库管理员(DBA)及开发人员,提供可操作的技术建议,促进数据库系统的高效稳定运行。持续深入理解YashanDB架构与监控指标,结合科学的调优方法,能有效提升系统性能,保障业务的连续性和数据的一致性。YashanDB提供丰富的动态视图,如V$INSTANCE、V$TRANSACTION、V$SESSION、V$SYSTEM_EVENT等,实时反映数据库的活跃会话、事务状态、锁等待和I/O事件。

2501_91591875的博客 391

KingbaseES进程管理从入门到精通,参数调优实战指南

摘要: 本文总结了KingbaseES(KES)进程管理的实战经验。通过两次生产故障(连接数爆满和内存耗尽)的教训,作者深入剖析了KES独立服务进程模式的必要性,对比了主流数据库架构的优劣,并详细拆解了KES的进程体系(主进程、后端服务进程、检查点进程等)。重点分享了控制进程数量和资源的核心参数调优技巧,包括max_connections的计算逻辑、autovacuum_max_workers的IO优化、work_mem防烂SQL拖库等,强调合理配置连接池、预留超级用户连接、限制并行查询等最佳实践。全文基于

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 3万+

5个示例展示YashanDB数据库的实践应用

崖山集群服务(YCS)配合崖山文件系统(YFS),确保元数据一致性和文件系统高可用,依托多实例故障自动切换机制,实现集群的无缝高可用。YashanDB通过灵活的部署形式、多样的存储引擎、强大的SQL优化与并行执行、以及完善的高可用策略,展示了其面向现代应用场景的技术成熟度和稳健性。未来,随着数据规模的扩大及业务复杂性的提升,持续完善如列存优化、多版本并发控制及智能调度等技术,将成为数据库产品的核心竞争力。保障高可用及数据安全:配置主备复制、自动选主机制和完善的备份恢复策略,保证业务连续与数据一致性。

2501_91591875的博客 711

oracle系统进程主要有哪些,作用是什么?思维导图 代码示例(java 架构)

Oracle数据库为了确保高效、可靠的操作,使用了一系列系统进程来执行各种任务。这些进程可以分为两类:固定后台进程(Background Processes)和可选后台进程(Optional Background Processes)。

qq_33240556的博客 1323

7大关键因素保障YashanDB数据库的稳定性

综上所述,YashanDB数据库通过灵活的多形态部署架构、先进的存储和空间管理、高效的事务处理机制、完备的日志与恢复技术、优化的SQL引擎、高度协同的共享集群基础设施以及全面的安全和诊断体系,构筑起了一个稳健、可靠且高性能的数据库平台。写一致性机制通过阻塞及重启保证修改操作的原子性,锁机制(行锁及表锁)防止写写冲突与死锁,数据库能有效调度并发操作,维持数据正确的同时极大提升并发性能。如何确保数据库系统的稳定运行,避免性能瓶颈、数据丢失以及故障中断,是企业数据库管理的重要课题。

2501_91591875的博客 840

5个关键策略提升YashanDB数据库的数据质量

索引是提升数据库查询性能和数据访问质量的重要手段。良好的索引聚集因子降低索引范围扫描的I/O成本,索引统计信息的动态收集和更新,为成本基优化器(CBO)提供准确的基数估算数据,确保执行计划的优化效果。MVCC通过维护数据的历史版本及其对应的UNDO日志,使得多个事务可以并发访问数据库,避免了读写冲突,减少了锁争用,从而提升数据访问的性能和质量。访问约束技术基于有界计算理论,可实现海量数据的语义压缩和预计算,通过访问约束机制,缩减查询的计算量和访问范围,保证业务查询的高效性同时增强数据质量保障。

2501_91591875的博客 615

YashanDB:企业数据战略的核心组成部分

逻辑与物理层分离的表空间及段页式管理,使存储空间分配和回收更灵活,支持在线扩展和空间复用,保障大规模数据的高效管理。现代企业面临的数据处理需求日益复杂,要求数据库系统不仅具备高性能的数据存储和查询能力,还需确保数据一致性和高可用性。异常关闭后,启动实例恢复流程,先回放redo日志(前滚),再回滚未提交事务,彻底保证数据的完整性和一致性。YashanDB凭借灵活的部署架构、多样的存储模型、强大的事务控制和高可用机制,为企业构建坚实的数字基础设施提供了全面保障。

2501_91591875的博客 536

企业数据数字化转型中的YashanDB应用实践

数据库作为核心基础设施,其能力直接影响数字化转型的成效。分布式部署则引入管理节点(MN组)、协调节点(CN组)和数据节点(DN组),以实现海量数据的线性扩展和高效并行计算,满足复杂数据分析及处理要求。共享集群部署依赖共享存储及聚合内存技术,实现多实例对同一数据库实例的并发强一致性访问,适用于高端核心交易场景,保障系统的高可用和强扩展能力。YashanDB凭借其完善的多形态部署能力、多样化存储引擎支持、强大的SQL引擎优化机制以及稳健的事务和高可用架构,为企业在数字化转型过程中提供了坚实的数据基础。

2501_91591875的博客 394
上一篇: dbops 助力 GreatSQL 单机架构安装部署
下一篇: MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值