postgresql-索引与优化

PostgreSQL索引策略与查询优化技巧 `Index` 是数据库管理系统中用于提高数据检索速度的数据结构。它创建了一个指向实际数据行的指针列表,允许数据库引擎快速定位到满足查询条件的记录。 索引的优缺点: - **优点**: 显著提升查询性能,加速排序和分组操作 - **缺点**: 占用额外存储空间,增加数据修改操作的成本 阅读详情

索引简介

索引(Index)可以用于提高数据库的查询性能;但是索引也需要进行读写,同时还会占用
更多的存储空间;因此了解并适当利用索引对于数据库的优化至关重要。本篇我们就来介绍如何
高效地使用 PostgreSQL 索引。

-- 创建表
CREATE TABLE test (
 id integer,
 name text
);
-- generate_series 产生序列
INSERT INTO test
SELECT v,'val:'||v FROM generate_series(1, 10000000) v;
SELECT name FROM test WHERE id = 10000;

如果没有索引,数据库需要扫描整个表才能找到相应的数据。利用 EXPLAIN 命令可以看到
数据库的执行计划,也就是 PostgreSQL 执行 SQL 语句的具体步骤
执行计划参考文档

-- Parallel Seq Scan 表示并行顺序扫描,执行消耗了大量时间
--;由于表中有包含大量数据,而查询只返回一行数据,显然这种方法效率很低。
explain analyze
SELECT name FROM test WHERE id = 10000;

在这里插入图片描述

--如果在 id 列上存在索引,则可以通过索引快速找到匹配的结果。我们先创建一个索引:
CREATE INDEX test_id_index ON test (id);
-- 创建索引之后,再次查看数据库的执行计划
explain analyze
SELECT name FROM test WHERE id = 10000;

在这里插入图片描述
Index Scan 表示索引扫描,执行消耗了 1.3ms;这种方式类似于图书最后的关键字索引,读
者可以相对快速地浏览索引并翻到适当的页面,而不必阅读整本书来找到感兴趣的内容。

索引不仅仅能够优化查询语句,某些包含 WHERE 条件的 UPDATE、DELETE 语句也可以
利用索引提高性能,因为修改数据的前提是找到数据。

此外,索引也可以用于优化连接查询,基于连接条件中的字段创建索引可以提高连接查询的
性能。索引甚至还能优化分组或者排序操作,因为索引自身是按照顺序进行组织存储的。

另一方面,系统维护索引需要付出一定的代价,从而增加数据修改操作的负担。所以,我们
需要合理创建索引,一般只为经常使用到的字段创建索引。就像图书一样,不可能为书中的每个
关键字都创建一个索引

索引类型

PostgreSQL 提高了多种索引类型:B-树、哈希、GiST、SP-GiST、GIN 以及 BRIN 索引。每
种索引基于不同的存储结构和算法,用于优化不同类型的查询。默认情况下,PostgreSQL 创建
B-树索引,因为它适合大部分情况下的查询

B-树索引

B-树是一个自平衡树(self-balancing tree),按照顺序存储数据,支持对数时间复杂度(O(logN))
的搜索、插入、删除和顺序访问。
对于索引列上的以下比较运算符,PostgreSQL 优化器都会考虑使用 B-树索引:
• <
• <=
• =
• >=
• BETWEEN
• IN
• IS NULL
• IS NOT NULL
另外,如果模式匹配运算符 LIKE 和~中模式的开头不是通配符,优化器也可以使用 B-树索
引,例如:

col LIKE 'foo%'
col ~ '^foo'

对于不区分大小的的 ILIKE 和~*运算符,如果匹配的模式以非字母的字符(不受大小写转
换影响)开头,也可以使用 B-树索引。
B-树索引还可以用于优化排序操作,例如:

SELECT col1, col2
 FROM t
WHERE col1 BETWEEN 100 AND 200
ORDER BY col1;

col1 上的索引不仅能够优化查询条件,也可以避免额外的排序操作;因为基于该索引访问时
本身就是按照排序返回结果

哈希索引

哈希索引(Hash index)只能用于简单的等值查找(=),也就是说索引字段被用于等号条
件判断。因为对数据进行哈希运算之后不再保留原来的大小关系。
创建哈希索引需要使用 HASH 关键字:

-- CREATE INDEX 语句用于创建索引,USING 子句指定索引的类型
CREATE INDEX index_name
ON table_name USING HASH (column_name);

GiST 索引

GiST 代表通用搜索树(Generalized Search Tree),GiST 索引单个索引类型,而是一种支持
不同索引策略的框架。GiST 索引常见的用途包括几何数据的索引和全文搜索。GiST 索引也可以
用于优化“最近邻”搜索,例如

-- 该语句用于查找距离某个目标地点最近的 10 个地方。
SELECT *
FROM places
ORDER BY location <-> point '(101,456)'
LIMIT 10;

SP-GiST 索引

SP-GiST 代表空间分区 GiST,主要用于 GIS、多媒体、电话路由以及 IP 路由等数据的索引。
与 GiST 类似,SP-GiST 也支持“最近邻”搜索

GIN 索引

GIN 代表广义倒排索引(generalized inverted indexes),主要用于单个字段中包含多个值的
数据,例如 hstore、array、jsonb 以及 range 数据类型。一个倒排索引为每个元素值都创建一个单
独的索引项,可以有效地查询某个特定元素值是否存在。Google、百度这种搜索引擎利用的就是
倒排索引。

BRIN 索引

BRIN 代表块区间索引(block range indexes),存储了连续物理范围区间内的数据摘要信息。
BRIN 也相比 B-树索引要小很多,维护也更容易。对于不进行水平分区就无法使用 B-树索引的
超大型表,可以考虑 BRIN。
BRIN 通常用于具有线性排序顺序的字段,例如订单表的创建日期
postgresql官网关于索引的介绍

创建索引

PostgreSQL 使用 CREATE INDEX 语句创建新的索引:

CREATE INDEX index_name ON table_name
[USING method]
(column_name [ASC | DESC] [NULLS FIRST | NULLS LAST]);

index_name 是索引的名称,table_name 是表的名称;
• method 表示索引的类型,例如 btree、hash、gist、spgist、gin 或者 brin。默认为 btree;
• column_name 是字段名,ASC 表示升序排序(默认值),DESC 表示降序索引;
• NULLS FIRST 和 NULLS LAST 表示索引中空值的排列顺序,升序索引时默认为 NULLS
LAST,降序索引时默认为 NULLS FIRST。
在这里插入图片描述

唯一索引

在创建索引时,可以使用 UNIQUE 关键字指定唯一索引:

CREATE UNIQUE INDEX index_name
ON table_name (column_name [ASC | DESC] [NULLS FIRST | NULLS LAST]);

唯一索引可以用于实现唯一约束,PostgreSQL 目前只支持 B-树类型的唯一索引。多个 NULL
被看作是不同的值,因此唯一索引字段可以存在多个空值
对于主键和唯一约束,PostgreSQL 会自动创建一个唯一索引,从而确保唯一性。

多列索引

CREATE [UNIQUE] INDEX index_name ON table_name
[USING method]
(column1 [ASC | DESC] [NULLS FIRST | NULLS LAST], ...);

对于多列索引,应该将最常作为查询条件使用的字段放在左边,较少使用的字段放在右边。
例如,基于(c1, c2, c3)创建的索引可以优化以下查询:

WHERE c1 = v1 and c2 = v2 and c3 = v3;
WHERE c1 = v1 and c2 = v2;
WHERE c1 = v1;

但是以下查询无法使用该索引:

WHERE c2 = v2;
WHERE c3 = v3;
WHERE c2 = v2 and c3 = v3;

对于多列唯一索引,字段的组合值不能重复;但是如果某个字段是空值,其他字段可以出现
重复值。

函数索引

函数索引,也叫表达式索引,是指基于某个函数或者表达式的值创建的索引。PostgreSQL
中创建函数索引的语法如下

CREATE [UNIQUE] INDEX index_name
ON table_name (expression);

expression 是基于字段的表达式或者函数。
以下查询在 name 字段上使用了 upper 函数:
在这里插入图片描述
虽然 name 字段上存在索引 test_name_index,但是函数会导致优化器无法使用该索引。为了
优化这种不分区大小写的查询语句,可以基于 name 字段创建一个函数索引

drop index test_name_index;
create index test_name_index on test(upper(name));

再次查看该语句的执行计划:
在这里插入图片描述
函数索引的维护成本比较高,因为插入和更新时都需要进行函数计算。

部分索引

部分索引(partial index)是只针对表中部分数据行创建的索引,通过一个 WHERE 子句指
定需要索引的行。例如,对于订单表 orders,绝大部的订单都处于完成状态;我们只需要针对未
完成的订单进行查询跟踪,可以创建一个部分索引

-- 创建表
create table orders(order_id int primary key, order_ts timestamp, finished
boolean);

-- 创建索引
create index orders_unfinished_index
on orders (order_id)
WHERE finished is not true;

该索引只包含了未完成的订单 id,比直接基于 finished 字段创建的索引小很多。它可以用于
优化未完成订单的查询:

explain analyze
select order_id
from orders
where finished is not true;

在这里插入图片描述

覆盖索引

PostgreSQL 中的索引都属于二级索引,意味着索引和数据是分开存储的。因此通过索引查
找数据即需要访问索引,又需要访问表,而表的访问是随机 I/O
为了解决这个性能问题,PostgreSQL 支持 Index-Only Scan,只需要访问索引的数据就能获
得需要的结果,而不需要再次访问表中的数据。例如

-- 创建表
create table t (a int, b int, c int);
-- 创建唯一索引
create unique index idx_t_ab on t using btree (a, b) include (c);

以上语句基于字段 a 和 b 创建了多列索引,同时利用 INCLUDE 在索引的叶子节点存储了字
段 c 的值。以下查询可以利用 Index-Only Scan:

explain analyze
select a, b, c
from t
where a = 100 and b = 200;

在这里插入图片描述
以上查询只返回索引字段(a、b)和覆盖的字段(c),可以仅通过扫描索引即可返回结果。
B-树索引支持 Index-Only Scan,GiST 和 SP-GiST 索引支持某些运算符的 Index-Only Scan,
其他索引不支持这种方式

查看索引

PostgreSQL 提供了一个关于索引的视图 pg_indexes,可以用于查看索引的信息:

-- 该视图包含的字段依次为:模式名、表名、索引名、表空间以及索引的定义语句。
select * from pg_indexes where tablename = 'test';

在这里插入图片描述

维护索引

PostgreSQL 提供了一些修改和重建索引的方法:

ALTER INDEX index_name RENAME TO new_name;
ALTER INDEX index_name SET TABLESPACE tablespace_name;
REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } index_name;

两个 ALTER INDEX 语句分别用于重命名索引和移动索引到其他表空间;REINDEX 用于重
建索引数据,支持不同级别的索引重建

另外,索引被创建之后,系统会在修改数据的同时自动更新索引。不过,我们需要定期执行
ANALYZE 命令更新数据库的统计信息,以便优化器能够合理使用索引

删除索引

DROP INDEX index_name [ CASCADE | RESTRICT ];

CASCADE 表示级联删除其他依赖该索引的对象;RESTRICT 表示如果存在依赖于该索引 的对象,将会拒绝删除操作。默认为 RESTRICT

--可以使用以下语句删除 test 上的索引:
drop index test_id_index, test_name_index;
POSTGRESQL (PG) 性能优化之索引使用技巧(复合多列索引、局部索引、表达式索引、覆盖索引、唯一索引) 索引优化技巧:复合索引(多列索引)、部分索引(局部索引)、表达式索引、覆盖索引和唯一索引,概念描述以及使用实例,优缺点等 阅读详情

相关推荐

如何优化 PostgreSQL 中的索引使用?

优化 PostgreSQL 中的索引使用是一个综合性的任务,需要我们深入理解数据库的工作原理,结合实际的业务需求,选择合适的索引类型和列,避免过度索引,定期维护和监控索引的使用情况。就像驾驭一辆汽车,只有熟悉各个部件的功能,掌握正确的驾驶技巧,定期保养和检查,才能让车子跑得又快又稳。希望通过以上的介绍,能够帮助大家在 PostgreSQL 中更好地利用索引,提升数据库的性能,为业务的发展提供有力的支持。🎉相关推荐🍅关注博主🎗️带你畅游技术世界,不错过每一次成长机会!

2401_86074221的博客 1768

第七章:死磕postgreSQL,8个问题教会你,postgreSQL索引的优化与技巧

在PostgreSQL中,索引是一种数据结构,通过快速定位和访问特定数据来提高查询性能。它类似于书籍中的索引,通过引用索引而不是扫描整本书,可以更快地找到信息。当在PostgreSQL中对某列或一组列创建索引时,数据库会创建一个单独的数据结构,按照特定的顺序组织索引值。这使得数据库引擎能够执行高效的查找、排序和过滤操作。通过使用索引,查询可以避免全表扫描,而是执行索引扫描,速度更快。索引帮助减少检索数据所需的磁盘I/O操作次数,从而提高查询性能。

qq_28245087的博客 2486

PostgreSQL 索引管理

索引是关系型数据库离不开的话题,它是数据库中一种快速查询数据的方法。在 SQL 优化中,创建高性能的索引非常重要,本篇文章将对比 MySQL 介绍 PostgreSQL 的索引管理。

分享既学习 2667

PostgreSQL 索引详解:从原理到实战优化

PostgreSQL索引详解:从原理到实战优化 本文全面介绍PostgreSQL索引的核心知识,包括: 索引基础概念:阐述索引加速查询的原理及其优缺点 主要索引类型。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6332

怎样在 PostgreSQL 中优化对索引的维护操作?

总之,在 PostgreSQL 中优化索引维护操作需要综合考虑多个因素,包括数据的特点、查询的模式、系统的负载等。只有根据实际情况进行合理的规划和调整,才能让数据库始终保持高效的运行状态,为业务的发展提供有力的支持。比如说,如果查询计划显示全表扫描被频繁使用,而本应该使用索引的地方却没有,这就可能是索引出了问题。同样的道理,在数据库中,如果索引没有得到恰当的维护,查询性能就会大打折扣。不要过度创建索引,因为每多一个索引,数据的插入、更新和删除操作的开销就会增加。另外,监控索引的使用情况也是至关重要的。

2401_86074221的博客 1025

怎样在 PostgreSQL 中优化对大表的索引合并和索引跳跃扫描?

在 PostgreSQL 中优化对大表的索引合并和索引跳跃扫描是一项重要的任务,它可以提高查询性能,降低系统资源消耗,提高数据库的可扩展性。通过合理设计索引、调整查询语句、使用覆盖索引等方法,我们可以优化索引合并;通过选择合适的索引、调整查询条件、增加索引的选择性等方法,我们可以优化索引跳跃扫描。在实际应用中,我们需要根据具体的业务需求和数据特点,选择合适的优化方法,并不断进行监控和调整,以确保数据库的性能始终保持在一个较好的水平。🎉相关推荐🍅关注博主🎗️带你畅游技术世界,不错过每一次成长机会!

2401_86074221的博客 1288

POSTGRESQL 短查询优化,独立索引与组合索引 8

这是一个关于POSTGRESQL 查询的优化系列,这已经是这个系列的第八集了,接上期,在OLTP查询中我们需要注意的查询优化的地方非常多,稍不留意就会在一些问题上的操作导致查询的数据逻辑错...

sql server的专栏 2255

怎样在 PostgreSQL 中优化对复杂条件过滤的索引选择?

同样,在数据库中,如果索引选择不当,数据库服务器就需要遍历大量的数据,从而导致查询速度缓慢,影响系统的整体性能。再比如,有一个名为“employees”的表,包含“employee_id”(员工 ID,主键)、“department_id”(部门 ID)、“salary”(工资)和“job_title”(职位)等列。通过合理的分析和设计,我们可以显著提高数据库的查询性能,为业务的顺利运行提供有力的支持。那么创建一个基于(“城市”,“年龄”)的组合索引可能会比分别为“城市”和“年龄”创建单独的索引更有效。

2401_86074221的博客 1156

03.PostgreSQL常用索引与优化

name text如果没有索引,数据库需要扫描整个表才能找到相应的数据。利用EXPLAINParallel Seq Scan 表示并行顺序扫描,执行消耗了 12 s;由于表中有包含大量数据,而查询只返回一行数据,显然这种方法效率很低。关于执行计划的更多信息,可以参考这篇文章。此时,如果在 id 列上存在索引,则可以通过索引快速找到匹配的结果。创建索引需要消耗一定的时间。Index Scan 表示索引扫描,执行消耗了 20 ms;

qq_42009262的博客 665

PostgreSQL:索引与查询优化

索引就像数据库的"超能力药剂",但错误的使用方式可能导致性能雪崩:某知名社交平台曾因错误添加GIN索引导致写入延迟增加300%,直接造成用户发帖量下降15%。这警示我们,索引的威力与风险并存。 本文将带您深入PostgreSQL的索引迷宫,不仅解析各种索引的运行机制,更将揭示查询优化器的决策逻辑。通过20+个真实故障案例的逆向分析,带您了解: 如何为JSONB数据设计复合GIN索引 B-Tree索引的隐藏排序特性如何影响分页查询 并行查询执行计划的特征识别

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 2985

7、PostgreSQL 索引使用与优化全解析

本文深入解析了 PostgreSQL 中索引的使用与优化策略,涵盖数据分布对性能的影响、表聚类操作、仅索引扫描的优势、组合索引的应用、功能索引与部分索引的实现、索引空间消耗的优化,以及并发索引创建等关键技术。同时,文章还介绍了自定义操作符类的创建方法,并讨论了索引性能监控与调优的流程。通过这些方法,可以显著提升 PostgreSQL 数据库的查询性能和效率。

efc123456的博客 73

7.2 PostgreSQL索引的维护与优化

索引是数据库性能优化的关键工具,它们通过提供快速的数据检索路径来提高查询速度。加快查询速度:提高数据检索效率:优化排序和分组操作:减少I/O操作:影响写操作性能:随着数据的不断变化和查询模式的演进,索引维护成为确保数据库性能的重要任务。适应数据变化:优化查询性能:避免过度索引:减少资源消耗:保持数据一致性:提高系统稳定性:索引维护是数据库管理中的一项常规工作,它需要数据库管理员根据系统的实际运行情况和业务需求,定期进行索引的添加、删除和优化。通过有效的索引维护,可以确保数据库系统在面对不断变化的数据和查询需

Python老吕的博客 1702

掌握查询利器 深入理解PostgreSQL索引原理与优化

PostgreSQL索引是数据库性能优化中很重要的一个方向,合理使用索引可以有效提升数据库的查询效率。在PostgreSQL中,索引机制是为了更快地寻找某个值而构建的。PostgreSQL索引可加速搜索操作,当数据表中的数据行太多时,没有索引会影响性能,影响查询速度,而索引能够提供快速查找数据的能力,除了基础索引外,还有B树索引、哈希索引、GiST索引、GIN索引等,各种索引类型的执行效率不同,如果我们使用恰当的索引,可以显著提高数据库表数据的查询效率。

陈书予 1万+

PostgreSQL多表连接与索引优化实战

摘要:PostgreSQL多表连接与索引优化是数据库性能调优的核心课题。优化要点包括:1)根据查询需求选择合适连接类型(内连接/外连接);2)在连接列上创建索引,优先高频查询列;3)优化组合索引设计,遵循高频优先、选择性优先原则;4)合理处理NULL值,使用IS NOT DISTINCT FROM和COALESCE函数;5)结合EXPLAIN ANALYZE分析执行计划,定期维护数据库。通过科学设计索引策略和优化连接方式,可显著提升复杂查询性能。

码道源码 1348

PostgreSQL假设索引:性能优化的利器

本文还有配套的精品资源,点击获取 简介:PostgreSQL中的假设索引是一种创新概念,它允许用户模拟索引的效果,而无需实际创建物理索引。这为数据库管理员和开发人员提供了便利,他们可以在不影响生产环境的情况下进行性能优化实验。通过三个新的命令(CREATE Hypothetical INDEX、DROP Hypothetical INDEX和EXPLAIN Hypothet...

weixin_28949937的博客 1089

【中软软件测试笔试题】中国软件与技术服务股份有限公司笔试一卷

请分别写出ISO7层架构,并分别说明TCP、UDP协议分别在处于哪一层,以及TCP、 UPD协议有什么区别。 答:7 应用层 6 表示层 5 会话层 4 传输层 3网络层 2 数据链路层 1 物理层 第四层;UDP是面向无连接、不可靠数据传输协议; TCP是面向连接、可靠数据传输协议......

Yanan990830的博客 1815

PostgreSQL 索引与性能优化详解 —— 从原理到实战

《PostgreSQL索引优化指南》摘要: 本文系统讲解PostgreSQL六大索引类型(B-Tree、Hash、GIN等)的核心原理与适用场景,提供索引选型速查表。重点剖析多列索引顺序策略、部分索引、表达式索引等高级技巧,并给出覆盖索引、并发建索引等性能优化方案。通过大量SQL示例演示如何为JSONB、数组、时间序列等特殊场景设计高效索引,同时强调索引的读写平衡原则,帮助开发者在查询性能与写入开销间取得最佳平衡。

csdn_tom_168的博客 1654

第一次面试经历:集创北方数字IC前端面试(崩)总结

时间:2020年8月11日上午10点 公司:集创北方,做LED、LCD、OLED、AMOLED等显示器芯片的公司,应该主要是做显示驱动、图像处理、电源管理等这一块。 岗位:数字IC前端设计 城市:北京 形式:线上面试。感觉我俩是两个社畜,他说摄像头开不开都可以,我说那语音OK吗他说OK,于是直接语音问答。 项目经历:基于FPGA的车牌识别 & 先导存储器集成工艺开发(课题组) & 基于FPGA的贪吃蛇小游戏 反正是凉凉的,这时候准备还不足,前面都在复习项目没怎么刷过题。 过程如下: 自我介绍

coin的博客 6678

怎样优化 PostgreSQL 中对索引覆盖查询的优化?

优化 PostgreSQL 中的索引覆盖查询需要综合考虑多个因素,包括选择合适的索引类型、确保索引包含查询所需的列、避免过度索引、定期分析和重新评估索引、合理使用组合索引、考虑索引的顺序以及优化表结构等。通过精心的设计和维护,我们可以充分发挥索引覆盖查询的优势,提高数据库的性能,为业务的顺利运行提供有力的支持。希望以上的内容能够帮助您更好地优化 PostgreSQL 中的索引覆盖查询。在实际应用中,还需要根据具体的业务场景和数据特点进行灵活的调整和优化。

2401_86074221的博客 848

【10. Wi-Fi 通用模组-小米 IoT 平台-如何进行硬件调试】

调试APP功能:从米家服务器缓存读取设备状态,等同于米家APP 的环境,开发者使用该调试器可模拟用户使用设备的实际情况,即调试米家 App 中的扩展程序。- 调试固件:调试器从固件读取设备状态,用于调试设备模组固件的某个单项功能,开发者使用该调试器可针对性地调试设备的某个功能。小爱语控测试工具:如果当前产品可被小爱语控,则可以使用该工具调试语控效果。调试APP功能(云端缓存)

tuoyuanO的博客 1041

PLS-SEM(偏最小二乘路径建模)模型拟合优度指标

PLS-SEM(偏最小二乘路径建模)是一种基于方差的分析方法,侧重于预测导向,通过迭代优化路径系数和外部权重来最大化潜变量的解释方差(R²)。其评估指标分为外部测量模型和结构模型两部分:外部测量模型关注潜变量与显变量的关系,通过标准化载荷(>0.7)、信度指标(Cronbach’s α、复合信度CR>0.7)、聚合效度(AVE>0.5)和区分效度(Fornell-Larcker标准、HTMT<0.85)来评估模型的可靠性和有效性。结构模型则检验潜变量间的因果关系,通过路径系数(β值)

wewil_lwin的博客 3226

PostgreSQL 索引优化:CloudNativePG 提升查询性能

你是否曾遇到过PostgreSQL数据库查询性能随数据量增长而急剧下降的问题?是否在Kubernetes环境中难以平衡数据库性能与资源开销?本文将系统讲解如何在CloudNativePG(CNPG)环境中实现PostgreSQL索引优化,通过10个实战步骤将查询性能提升10倍以上。 读完本文后,你将掌握: - 索引类型选择与适用场景 - 慢查询识别与索引优化流程 - CloudNativePG环...

gitblog_00749的博客 1119

5个IO口驱动188数码管:查理复用算法在TM52F1363上的极致应用

本文深入解析了如何利用查理复用算法,在TM52F1363单片机上仅用5个IO口驱动188数码管。通过精密的硬件连接与软件时序控制,结合高阻态和动态扫描策略,实现了在极致资源限制下的稳定显示,为成本敏感型嵌入式产品提供了高效的IO复用解决方案。

numpy6sculptor的博客 476
上一篇: postgresql -数据库事务与并发控制
下一篇: postgresql-视图
迷失的小鹿
博客等级 码龄8年 1万+粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值