-
[openGauss] SCRLock加速分布式锁可获得性本特性自openGauss 5.0.0版本开始引入。特性简介在资源池化场景下使用SCRLock提供分布式锁能力,提高分布式锁性能。客户价值随着数据规模和数据节点的增加,节点之间获取分布式锁需要消耗很多事件,影响到客户端到端的数据库体验,利用SCRLock特性,可以大幅度降低分布式锁远端时延,并且提供公平性,防止节点处于永久性等待的现象。特性描述openGauss资源池化使用基于TCP协议的被动模式分布式锁,具有网络时延高,加锁流程复杂等劣势,影响业务获取锁的性能。SCRLock提供基于RDMA协议的主动模式分布式锁,通过RDMA加速网络提高获取锁的效率,主动模式也带来了流程简单的天然优势;SCRLock提供了锁的公平性,可以防止集群中出现永久性等待的现象;SCRLock同时提供本地锁缓存能力,减少远端锁获取频次,从而降低时延。特性增强无。特性约束数据库服务器必须使用Mellanox CX4/CX5网卡。依赖关系SCRLock依赖资源池化特性。当用户设置guc参数“ss_enable_dms“ = “on“、“ss_enable_dss“ = “on“时,打开DMS和DSS组件,方可使用SCRLock分布式锁特性。详情查看:cid:link_1详情查看:cid:link_0
-
[openGauss] gs_collector适配资源池化可获得性本特性自openGauss 6.0.0-RC1版本开始引入。特性简介gs_collector支持收集资源池化架构下:DMS、DSS日志,DSS配置文件。xlog、pg_control、复制槽。磁阵LUN/注册信息、磁盘信息。客户价值使用gs_collector,可收集资源池化架构下DMS、DSS、磁阵信息,便于故障定位。特性描述gs_collector支持收集资源池化架构下:DMS、DSS日志及DSS配置文件: 支持收集RUN日志、DEBUG日志、操作日志、黑匣子日志,支持收集dss实例及其卷配置信息、cm配置信息。xlog、pg_control、复制槽: 资源池化架构下,支持收集共享磁阵中xlog、pg_control、复制槽。磁阵LUN/注册信息、磁盘信息。特性增强本特性是对gs_collector收集资源池化架构下DSS、DMS及磁阵信息进行的增强。特性约束无。依赖关系本特性依赖资源池化磁阵设备。详情查看:cid:link_1详情查看:cid:link_0
-
MySQL兼容性增强可获得性本特性自openGauss 3.0.0版本开始引入。特性简介本特性主要从以下几方面增强openGauss与MySQL的兼容性(只列举部分典型语法,详情请参见《数据迁移指南》中“MySQL兼容性说明”章节):。支持用户锁,允许用户通过sql加自定义的锁,可以让多个程序之间完成加锁相关的交互过程,使得客户端从任何位置访问都可以得到一致性的锁视图。支持建表插入数据时默认记录插入当前时间;更新数据时,如果未指定更新时间,默认显示数据变更的当前时间。支持设置会话级SQL模式,允许运行时变更、全局变更以及会话内变更。支持隐藏索引,隐藏索引不会被优化器使用。支持字段大小写敏感。建表时使用的字段名将保留大小写的信息到系统表中,而真正使用这些列时,忽略大小写。支持schema级、表级、列级设置和修改默认字符集和排序规则。支持rand(N)/random_bytes(N)函数。支持使用ASCII/BINARY作为列属性。支持使用0x的方式作为十六进制数输入。支持MySQL协议兼容,通过MySQL的JDBC driver或者MySQL命令行客户端,直接连接openGauss,通过参数hot_standby、dolphin_hot_standby控制备机的可连接性。支持B库字符序右模糊匹配时走索引扫描。会将匹配条件转换为大于等于和小于等于两个不等式作为索引条件。客户价值通过设置用户锁,对数据、数据结构或者某些字符串进行保护,避免会话之间相互干扰,保证了信息的一致性和安全性。解决了用户业务数据写入与修改时,记录其操作时间戳的问题。通过设置sql模式,可以解决早期版本遗留问题与后期版本的兼容性。通过隐藏索引,可以在不禁用/删除/重建索引的情况下,测试删除某个索引对于查询性能的影响,提升SQL调优的效率。通过支持字段大小写敏感,可以让列名在查询时保持建表时的大小写信息。通过支持schema级、表级、列级设置和修改默认字符集和排序规则,可以让用户根据实际使用场景灵活调整字符集和排序规则。详情查看:cid:link_1详情查看:cid:link_0
-
[openGauss] MySQL->openGauss迁移工具chameleon可获得性本特性自openGauss 3.0.0版本开始引入。特性简介chameleon工具是一个基于Python语言的MySQL到openGauss的实时复制工具。该工具提供了初始全量数据的复制以及增量数据的实时复制能力,可实现数据从MySQL迁移至openGauss。对于数据的全量和增量迁移,支持MySQL中各种数据类型的迁移,同时对于MySQL中的浮点数据类型,包括decimal、dec、numeric、float、float4、float8、real、double、double precision、fixed数据类型,可保证迁移后数据精度不丢失。客户价值通过使用chameleon工具,可完成数据从MySQL搬迁至openGauss数据库。特性描述chameleon工具提供数据全量和增量复制功能,使得数据可以从MySQL迁移至openGauss数据库。对于数据的全量和增量迁移,chameleon工具中存储了MySQL数据类型与openGauss数据类型之间的映射关系,可支持MySQL中各种数据类型的迁移。特别地,对于MySQL中的浮点数据类型,包括decimal、dec、numeric、float、float4、float8、real、double、double precision、fixed数据类型,若数据类型中显示指定或默认含有精度,将转化为openGauss中的numeric[p, s]类型;若数据类型中未显示指定精度,将转化为openGauss中的numeric数据类型,基于此,可保证离线迁移和在线迁移后数据精度不丢失。特性增强无。特性约束支持MySQL 5.7版本。对于数据类型映射后仍存在不兼容的情形,将导致表数据迁移失败,但不会终止后续的数据离线迁移过程。依赖关系无。详情查看:cid:link_1详情查看:cid:link_0
-
[openGauss] DB4AI: 数据库驱动AI可获得性本特性自openGauss 2.1.0版本开始引入。特性简介DB4AI是指利用数据库的能力驱动AI任务,实现数据存储、技术栈的同构。通过在数据库内集成AI算法,令openGauss具备数据库原生AI计算引擎、模型管理、AI算子、AI原生执行计划的能力,为用户提供普惠AI技术。不同于传统的AI建模流程,DB4AI“一站式”建模可以解决数据在各平台的反复流转问题,同时简化开发流程,并可通过数据库规划出最优执行路径,让开发者更专注于具体业务和模型的调优上,具备同类产品不具备的易用性与性能优势。客户价值通过本功能,用户无需手动编写AI模型代码,直接通过开箱即用的SQL语句即可执行机器学习模型的训练和预测,学习和使用成本极低;避免数据碎片化存储和反复搬迁导致的额外开销;更高的执行效率,本功能的AI模型训练效率极高,相比用户自行手动训练模型有数倍性能收益;更严密的安全防护,从而避免训练AI模型导致数据泄露。特性描述openGauss的原生DB4AI能力,通过引入原生AI算子,简化操作流程,充分利用数据库优化器、执行器的优化与执行能力,获得高性能的数据库内模型训练能力。更简化的模型训练与预测流程、更高的性能表现,让开发者在更短时间内能更专注于模型的调优与数据分析上,而避免了碎片化的技术栈与冗余的代码实现。特性增强在openGauss 3.0.0 版本中支持更多算法。特性约束数据库状态正常依赖关系无详情查看:cid:link_1 详情查看:cid:link_0
-
[openGauss] 动态数据脱敏机制可获得性本特性自openGauss 1.1.0版本开始引入。特性简介数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。客户价值数据隐私保护是数据库安全所需要具备的安全能力之一,可以在一定程度上限制非授权用户对隐私数据的访问,保证隐私数据安全。动态数据脱敏机制可以通过配置脱敏策略实现对指定数据库资源信息的隐私保护,另一方面,脱敏策略的配置也具有一定的灵活性,可以仅针对特定用户场景实现有针对性的隐私保护能力。特性描述动态数据脱敏机制基于资源标签进行脱敏策略的定制化,可根据实际场景选择特定的脱敏方式,也可以针对某些特定用户制定脱敏策略。一个完整的脱敏策略创建的SQL语法如下所示:CREATE RESOURCE LABEL label_for_creditcard ADD COLUMN(user1.table1.creditcard); CREATE RESOURCE LABEL label_for_name ADD COLUMN(user1.table1.name); CREATE MASKING POLICY msk_creditcard creditcardmasking ON LABEL(label_for_creditcard); CREATE MASKING POLICY msk_name randommasking ON LABEL(label_for_name) FILTER ON IP(local), ROLES(dev);其中,label_for_creditcard和msk_name为本轮计划脱敏的资源标签,分别包含了两个列对象;creditcardmasking、randommasking为预置的脱敏函数;msk_creditcard定义了所有用户对label_for_creditcard标签所包含的资源访问时做creditcardmasking的脱敏策略,不区分访问源;msk_name定义了本地用户dev对label_for_name标签所包含的资源访问时做randommasking的脱敏策略;当不指定FILTER对象时则表示对所有用户生效,否则仅对标识场景的用户生效。当前,预置的脱敏函数包括:每个脱敏函数规格如下:脱敏函数名示例creditcardmasking'4880-9898-4545-2525' 将会被脱敏为 'xxxx-xxxx-xxxx-2525',该函数仅对后4位之前的数字进行脱敏basicemailmasking'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com', 对出现第一个'@'之前的文本进行脱敏fullemailmasking'abcd@gmail.com' 将会被脱敏为 'xxxx@xxxxx.com',对出现最后一个'.'之前的文本(除'@'符外)进行脱敏alldigitsmasking'alex123alex' 将会被脱敏为 'alex000alex', 仅对文本中的数字进行脱敏shufflemasking'hello word' 将会被随机打乱顺序脱敏为 'hlwoeor dl', 该函数通过字符乱序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。randommasking'hello word' 将会被脱敏为 'ad5f5ghdf5',将文本按字符随机脱敏regexpmasking需要用户顺序输入四个参数,reg为被替换的字符串,replace_text为替换后的字符串,pos为目标字符串开始替换的初始位置,为整数类型,reg_len为替换长度,为整数类型。reg、replace_text可以用正则表达,pos如果不指定则默认为0,reg_len如果不指定则默认为-1,即pos后所有字符串。如果用户输入参数与参数类型不一致,则会使用maskall方式脱敏。CREATE MASKING POLICY msk_creditcard regexpmasking('[\d+]', 'x', 5, 9 ) ON LABEL(label_for_creditcard);'4880-9898-4545-2525' 将会被脱敏为 '4880-xxxx-xxxx-2525'maskall'4880-9898-4545-2525' 将会被脱敏为 'xxxxxxxxxxxxxxxxxxx'对于不支持的数据类型,默认使用maskall函数进行数据脱敏,若数据类型不属于maskall支持的数据类型则全部使用数字0进行脱敏,如果脱敏列涉及隐式转换,则结果以隐式转换后的数据类型为基础进行脱敏。另外需要说明的是,如果脱敏策略应用到数据列并生效,此时对该列数据的操作将以脱敏后的结果为基础而进行。动态数据脱敏适用于和实际业务紧密相关的场景,根据业务需要为用户提供合理的脱敏查询接口,以避免通过撞库而获取原始数据。特性增强无。特性约束动态数据脱敏策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户没有访问安全策略系统表和系统视图的权限。动态数据脱敏只在配置了脱敏策略的数据表上生效,而审计日志不在脱敏策略的生效范围内。在一个脱敏策略中,对于同一个资源标签仅可指定一种脱敏方式,不可重复指定。不允许多个脱敏策略对同一个资源标签进行脱敏,除以下脱敏场景外:使用FILTER指定策略生效的用户场景,包含相同资源标签的脱敏策略间FILTER生效场景无交集,此时可以根据用户场景明确辨别资源标签被哪种策略脱敏。Filter中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。对于带有query子句的INSERT或MERGE INTO操作,如果源表中包含脱敏列,则上述两种操作中插入或更新的结果为脱敏后的值,且不可还原。在内置安全策略开关开启的情况下,执行ALTER TABLE EXCHANGE PARTITION操作的源表若在脱敏列则执行失败。对于设置了动态数据脱敏策略的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器绕过脱敏策略。最多支持创建98个动态数据脱敏策略。仅支持使用上述七种预置脱敏策略。仅支持对只包含COLUMN属性的资源标签做脱敏。仅支持对基本表的列进行数据脱敏。仅支持对SELECT查询到的数据进行脱敏。FILTER中的IP地址以ipv4为例支持如下格式。脱敏函数名支持的数据类型creditcardmaskingBPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对信用卡格式的文本类数据)basicemailmaskingBPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对email格式的文本类型数据)fullemailmaskingBPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对email格式的文本类型数据)alldigitsmaskingBPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对包含数字的文本类型数据)shufflemaskingBPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对文本类型数据)randommaskingBPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对文本类型数据)maskallBOOL, RELTIME, TIME, TIMETZ, INTERVAL, TIMESTAMP, TIMESTAMPTZ, SMALLDATETIME, ABSTIME,TEXT, BPCHAR, VARCHAR, NVARCHAR2, NAME, INT8, INT4, INT2, INT1, NUMRIC, FLOAT4, FLOAT8, CASHip地址格式示例单ip127.0.0.1掩码表示ip127.0.0.1|255.255.255.0cidr表示ip127.0.0.1/24ip区间127.0.0.1-127.0.0.5依赖关系无。详情查看:cid:link_1详情查看:cid:link_0
-
Copy接口支持容错机制可获得性本特性自openGauss 1.0.0版本开始引入。特性简介支持将Copy过程中的部分错误导入到指定的错误表中,并且保持Copy过程不被中断。客户价值提升Copy功能的可用性和易用性,提升对于源数据格式异常等常见错误的容忍性和鲁棒性。特性描述openGauss提供用于创建函数的封装好的Copy错误表,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会中断事务,而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。特性增强无。特性约束支持容错的具体错误种类请参见《数据库运维指南》中“导入数据 > 使用COPY FROM STDIN导入数据 > 处理错误表”章节。依赖关系无。
-
Anomaly-detection:数据库指标采集、预测与异常监控可获得性本特性自openGauss1.1.0版本开始引入。特性简介anomaly_detection是openGauss集成的、可以用于数据库指标采集、预测以及异常监控与诊断的AI工具,是dbmind套间中的一个组件。支持采集的信息包括IO_Read、IO_Write、CPU_Usage、Memory_Usage以及数据库所占磁盘空间等。anomaly_detection可以同时监控多个指标,并预测每个指标未来的变化趋势,当发现某个指标在未来某段时间或者某个时刻会超出人工设置的阈值,该工具会通过日志进行报警。客户价值极大简化运维人员工作,释放大量劳动力,为公司节省成本。为用户提前发现异常情况,防止数据库发生意外,导致更大的损失。特性描述anomaly_detection由agent和detector两部分组成。agent和openGauss数据库环境部署在同一个服务器上,agent模块主要有两个作用。一个是定时采集数据库指标数据,并将采集到的数据存放到缓冲队列中;另一个作用是将缓冲队列中数据定时发送到detector端。detector模块基于http或https和agent模块通信,因此它可以部署到任何可以与agent端进行通信的服务器上,该模块主要主要有两个作用。一个是接受agent端发送的数据,并将收集到的数据缓存在本地;另外一个作用是基于收集到的数据库指标数据,对该指标的未来变化趋势进行预测和异常报警。特性增强无。特性约束数据库状态正常,并且用户已将数据目录写入环境变量,并以PGDATA命名。使用登录到数据库宿主机上的Linux用户,需要将$GAUSSHOME/bin添加到PATH环境变量中,即能够直接运行gsql、gs_guc、gs_ctl等数据库运维工具。Python版本建议为Python3.6及以上,且运行环境中已经安装相应依赖,并能够正常启动调优程序。本工具由Agent和Detector组成,Agent和Detector之间通过'http'或者'https'方式传递数据,因此需要保证Agent服务器和Detector服务器之间能够正常通信。Detector模块运行server和monitor服务, 需要分别启动。如果使用'https'方式进行通信,需要准备CA证书以及Agent和Detector的证书和密钥,并分别放入项目根目录certificate下的ca、agent、server中,同时将密钥加密密码放入certificate的pwf中,并将其权限设置为600,防止其他用户进行读写操作。用户也可以使用share中的脚本生成证书和密钥。依赖关系无。详情查看:cid:link_1 详情查看:cid:link_0
-
数据库论坛2024年7月份热门问题总结GaussDB(for Cassandra)如何解决分布式数据库中常见的数据一致性问题?cid:link_6解答:规则1:禁止在数据库中存储图片、文件等大数据。图片或文件等大数据建议存储到对象存储服务中。规则2:单行key和value数据大小最大不能超过64KB,平均大小不超过10KB。规则3:任何表的设计都要考虑到数据的删除策略,表中的数据不能无限的增长而不删除。规则4:设计分区键以均匀分发工作负载,避免出现数据倾斜问题。TPOPS上传数据库安装包成功 却查不到记录cid:link_2当前所提问题因提供的信息不足以支撑问题答复,需要进一步做故障定位,所以建议您要么提工单,要么直接联系华为侧负责人来求助解决,我们的运维人员都会及时跟进处理,提单链接如下,感谢您的使用:cid:link_0如何用python3.9 使用 psycopg2 连接高斯数据库文档中说:从发布包中获取,包名为GaussDB-Kernel_VxxxRxxxCxx.x-操作系统版本号-64bit-Python.tar.gz。这个包中的psycopg2不支持python3.9,请问如何解决?cid:link_3目前GaussDB支持的Python版本不包含3.9,可下载支持的Python版本后使用GaussDB正式安装的时候提示/lib64/libcrypto.so.10: version `libcrypto.so.10' not found,软链接已经建过了很奇怪,开始提示是/user/lib64也不存在,建完了之后提示/lib64cid:link_7请问你的操作系统版本是什么,感觉像是依赖不兼容,需要更新依赖时间范围分区表,怎么样创建表,让表根据数据,自动创建对应分区,比如 ,2024-12-01数据进来,就创建当日的分区。时间范围分区表,怎么样创建表,让表根据数据,自动创建对应分区,比如 ,2024-12-01数据进来,就创建当日的分区。我的语句 CREATE table t2(gddwm VARCHAR2(20),sjsj date)partition by RANGE("sjsj") INTERVAL('1 day')(PARTITION "P_20240101" VALUES LESS THAN(TO_DATE('2024-01-02 00:00:00','YYYY-MM-DD HH24:MI:SS')),PARTITION "P_20240102" VALUES LESS THAN(TO_DATE('2024-01-03 00:00:00','YYYY-MM-DD HH24:MI:SS')),PARTITION "P_20240103" VALUES LESS THAN(TO_DATE('2024-01-04 00:00:00','YYYY-MM-DD HH24:MI:SS')));主备版本报错,ERROR:Interval partitioned table is only supported in single-node mode. 有什么替代方法?cid:link_4解答:您好,该语句在集中式上执行是没有问题的,但分布式是不支持该功能的。添加一个 max(放大于最大日期)分区,插入就不会报找不到分区了,定期进行表维护,分区分割,添加分区即可。外网访问 Gaussdb HA port 8001端口,放开了安全组限制还是报错报错信息:外网访问 Gaussdb8 HA port 8001端口,放开了安全组限制,还是报错,org.postgresql.util.PSQLException: FATAL: no gs_hba.conf entry for replication connection from host "115.204.12.51", user "root", SSL off at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:525) at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:146) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:206)疑问:没有找到地方能让我修改 gs_hba.conf 文件放开外网ip访问数据库replication connection限制解答:gs_hba.conf文件位于数据库服务器节点数据目录(data)下,可以在数据库执行框中执行show hba_file;可找到;cid:link_1然后根据逻辑代码章节提示加入以下内容(内容自行调整):host replication all 10.10.10.10/32 sha256gsql中是否能设置查询表的字段宽度? 类似与Oracle中的 col的方式cid:link_5不支持,可以试试\x开启拓展模式更好的查看数据
-
Greenplum数据库,作为一个基于PostgreSQL的大规模并行处理(MPP)数据库系统,支持SQL标准中的集合运算。集合运算主要包括并集(UNION)、交集(INTERSECT)和差集(EXCEPT)等,它们用于合并或比较两个或多个SELECT语句的结果集。这些操作在处理数据时非常有用,特别是在数据清洗、去重、比较等场景中。1. UNIONUNION 运算符用于合并两个或多个 SELECT 语句的结果集,并默认去除重复的行。如果要包含重复行,可以使用 UNION ALL。语法示例:SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;注意:每个 SELECT 语句中的列数必须相同。每个 SELECT 语句中的列的数据类型必须兼容。默认情况下,UNION 运算符会从结果集中删除重复的行。2. INTERSECTINTERSECT 运算符用于返回两个或多个 SELECT 语句的结果集的交集,即同时存在于每个 SELECT 语句结果集中的行。语法示例:SELECT column_name(s) FROM table1 INTERSECT SELECT column_name(s) FROM table2;注意:类似于 UNION,INTERSECT 也要求每个 SELECT 语句中的列数相同,且数据类型兼容。INTERSECT 返回的是存在于所有 SELECT 语句结果集中的行,且默认去除重复的行。3. EXCEPTEXCEPT 运算符用于返回第一个 SELECT 语句的结果集中存在,但在后续 SELECT 语句结果集中不存在的行,即差集。语法示例:SELECT column_name(s) FROM table1 EXCEPT SELECT column_name(s) FROM table2;注意:类似于 UNION 和 INTERSECT,EXCEPT 也要求每个 SELECT 语句中的列数相同,且数据类型兼容。EXCEPT 返回的是第一个 SELECT 语句中独有的行,即那些不存在于后续 SELECT 语句结果集中的行,且默认去除重复的行。注意事项在进行集合运算时,应确保 SELECT 语句中的列顺序和数据类型相匹配。集合运算的结果默认不包括 NULL 值(除了 UNION ALL)。由于 Greenplum 是基于 PostgreSQL 的 MPP 数据库,集合运算的性能可能受到数据分布和集群状态的影响。通过上述介绍,你可以开始在 Greenplum 数据库中有效地使用集合运算来处理和分析数据了。
-
spring中生成数据库主键的方式有哪些
-
数据库论坛5月热门问题汇总F&A 1. **GaussDB上的数据迁移工具,哪个最快最安全?官方有提供迁移工具吗** https://bbs.huaweicloud.com/forum/thread-0235152513637141039-1-1.html 官方提供迁移服务 https://support.huaweicloud.com/productdesc-professionalservices/dbsmigrationservice1.html 根据客户的具体需求,向客户提供数据库迁移专业服务,包括用户/角色/权限迁移、结构迁移、数据迁移、数据校验及业务测试、性能调优、上线割接等内容。通过迁移评估、迁移方案设计、迁移技术验证、迁移演练、迁移实施和迁移验收的专业服务,最终实现客户源端数据库向目标数据库的平滑过渡。+ GaussDB上的数据迁移工具,**DataSync**和**Navicat Premium**都备受推崇。其中,DataSync作为华为官方提供的工具,支持在线迁移和离线迁移,提供了较快的迁移速度和较高的安全性。而Navicat Premium则以其强大的数据迁移功能、数据同步和高阶功能受到用户欢迎。从官方角度来看,**DataSync**是官方提供的迁移工具,速度和安全性都得到了官方支持。 2. **SQL语句中字段名大小写敏感问题** GaussDB主备版,字段名称包含大写字母查询报错,需要加引号才能正常执行 执行正常:select "keyTab" from file_source 执行错误:select keyTab from file_source,提示字段不存在 是否可以通过全局设置,在不加引号的情况下也能正常执行,如何进行设置? https://bbs.huaweicloud.com/forum/thread-0235152446556420038-1-1.html 在MySQL中是通过底层设计实现入参大小写不敏感的,但在DWS的MySQL兼容性模式下,我们可以通过设置GUC参数:SET behavior_compat_options=‘case_insensitive’,可使这些字符串处理函数入参大小写不敏感,兼容MySQL场景。 3. **存一些比较大的txt文件到GaussDB中,请问用CLOB性能好,还是BLOB性能好** https://bbs.huaweicloud.com/forum/thread-0235152377915737034-1-1.html 在将大型文本文件存储到GaussDB中时,选择使用 CLOB(Character Large Object)还是 BLOB(Binary Large Object)取决于文本文件的内容以及对数据的操作需求。 1. **CLOB(Character Large Object)**: - CLOB 适用于存储大量的文本数据,例如文本文档、日志文件等。 - CLOB 是以字符形式存储数据,适合存储文本数据,对于文本搜索和检索效果较好。 - CLOB 可以支持文本数据的高效读取和修改,特别适用于需要进行文本处理和分析的场景。 2. **BLOB(Binary Large Object)**: - BLOB 适用于存储二进制数据,例如图片、音频、视频等。 - BLOB 不对数据进行字符编码,直接以二进制形式存储数据,适合存储非文本数据。 - BLOB 对于二进制数据的存储和读取效率较高,适用于需要存储大型二进制文件的场景。 性能方面,一般来说,对于文本文件而言,使用 CLOB 更为合适,因为它能够更好地支持文本数据的存储和处理。而对于二进制文件,使用 BLOB 则更为合适,因为它能够更有效地存储和读取二进制数据。 4. **GaussDB数据量比较大的话,是否也需要像mysql一样去做分区分库** https://bbs.huaweicloud.com/forum/thread-0235152377574923033-1-1.html GaussDB(for MySQL)是华为基于MySQL协议的分布式数据库产品,它具有良好的分布式能力,可以通过分布式事务、分布式分片等技术来处理大规模数据。 当GaussDB数据量较大时,并不需要执行类似MySQL中的分区表操作,因为GaussDB已经内置了分布式存储和分布式事务处理机制。如果需要对数据进行分布式管理,可以通过以下方式: 分布式分片:GaussDB支持自动分片,可以根据分片键值进行数据的自动分布。 分布式事务:GaussDB支持分布式事务,确保跨节点的数据一致性。 高可用性:GaussDB支持多副本机制,通过异地容灾来保证数据的高可用性。 如果需要手动进行类似MySQL分区的操作,可以考虑使用GaussDB提供的数据迁移工具进行数据分片,但这通常是在了解系统负载和性能需求的前提下,由数据库管理员根据具体场景进行优化和规划。 在设计GaussDB的分布式策略时,应当充分利用其原生的分布式能力,避免进行额外的分区操作来实现数据分布,以免增加不必要的复杂性和性能开销。 4. **GaussDB(for MySQL)跟直接用 MySQL 有什么区别吗?性能上两者差多少** https://bbs.huaweicloud.com/forum/thread-0219151898877386002-1-1.html GaussDB(for MySQL)是华为自研的最新一代企业级高扩展海量存储云原生数据库,完全兼容MySQL。基于华为最新一代DFV存储,采用计算存储分离架构,128TB的海量存储,数据0丢失,既拥有商业数据库的高可用和性能,又具备开源低成本效益。 具体可以参考:https://support.huaweicloud.com/productdesc-gaussdbformysql/gaussdbformysql_faq_0144.html 5. **GaussDB for mysql 能否支持将数据全量迁移至本地的mysql? 用什么工具?** https://bbs.huaweicloud.com/forum/thread-0297151898778266001-1-1.html GaussDB for mysql 一般是能支持将数据全量迁移至本地的mysql
-
一、引言在数据驱动的时代,企业对于数据处理的需求日益增加。OLTP(在线事务处理)和OLAP(在线分析处理)作为两种重要的数据处理方式,在企业的日常运营和决策支持中扮演着关键角色。然而,传统的数据处理架构中,OLTP和OLAP往往是分离的,这在一定程度上限制了数据处理效率和灵活性。近年来,随着技术的不断发展,OLAP与OLTP一体式数据架构逐渐成为趋势。本文将探讨OLAP与OLTP一体式数据的实现方式、优缺点以及它的诞生背景。二、OLAP与OLTP一体式数据的实现OLAP与OLTP一体式数据的实现主要依赖于数据库技术的发展。具体来说,这种一体式数据架构通过以下方式实现:实时数据同步:利用DTS(数据传输服务)等技术,实现OLTP数据库和OLAP数据库之间的实时数据同步。确保OLAP数据库中的数据与OLTP数据库中的数据保持一致,从而支持实时分析查询。分布式架构:采用分布式数据库架构,将OLTP和OLAP的数据库部署在不同的物理节点上,通过高速网络进行连接。这种架构可以提高数据处理能力和扩展性,满足大规模数据处理的需求。统一技术栈:采用统一的技术栈,如使用相同的数据库管理系统、数据模型等,可以降低管理和维护成本,提高数据处理效率。三、OLAP与OLTP一体式数据的优缺点优点:实时性强:通过实时数据同步,OLAP可以实时获取OLTP中的数据,支持实时分析查询,提高决策效率。性能优越:分布式架构和统一技术栈可以提高数据处理能力和效率,满足大规模数据处理的需求。简化管理:采用统一的技术栈可以降低管理和维护成本,提高数据处理的效率和稳定性。缺点:技术复杂度高:实现OLAP与OLTP一体式数据需要采用先进的技术和架构,对技术人员的要求较高。成本较高:采用分布式架构和统一技术栈需要投入更多的硬件和软件资源,增加了成本。数据安全性挑战:由于数据在多个节点之间传输和存储,数据安全性面临更大的挑战。四、OLAP与OLTP一体式数据的诞生背景随着企业数据量的不断增加和业务需求的日益复杂,传统的OLTP和OLAP分离的数据处理架构已经无法满足企业的需求。企业需要一种能够同时支持实时事务处理和复杂分析查询的数据处理方案。因此,OLAP与OLTP一体式数据架构应运而生。它通过将OLTP和OLAP的数据处理能力融合在一起,实现了数据的高效处理和实时分析,为企业提供了更加灵活和高效的数据处理方案。五、结论OLAP与OLTP一体式数据架构是数据处理领域的重要创新之一。它通过实时数据同步、分布式架构和统一技术栈等技术手段,实现了OLTP和OLAP的高效融合,为企业提供了更加灵活和高效的数据处理方案。尽管这种架构存在一定的技术复杂度和成本挑战,但其带来的实时性强、性能优越和简化管理等优势,使得它成为未来数据处理领域的重要趋势之一。
-
一、流媒体:RTSP 和RTMP 1、RTSP 和 RTMP的工作原理 1)RTSP工作原理 用户设备向视频流平台发送 RTSP 请求 视频流平台返回可以操作的请求列表,比如播放、暂停等 用户设备向视频流平台发送具体的请求,比如播放 视频流平台解析请求并调用指定机制启动视频流处理 由于 RTSP 依赖于专用服务器,并且依赖于 RTP(底层用到了UDP),因此该协议不支持加密视频内容或重传丢失的数据包。 这里解释一下RTSP中是如何用到UDP和TCP的: RTP协议,英文全称:Real-time Transport Protocol,中文就是实时传输协议,它的底层其实就是UDP,这样一来就可以实现低延迟。 除了RTP协议,为确保流畅和一致的流传输,RTSP 还使用另外两种网络通信协议: TCP 收发控制命令(例如播放或停止请求):TCP可靠传输,比如用户按下播放或者停止播放的时候,这个是个准确的请求,这个需要保证可靠性,这个时候TCP作用就体现了。 UDP传送音频、视频和数据:UDP是低延迟的协议,那么用于传送音频、视频和数据可以达到非常高效的效果。 这里可以通过开源的rtsp服务器可以简单理解:TCP监听端口为8554,UDP监听端口为8000 2)RTMP工作原理 摄像头捕获视频 通过编码器将视频流传输到视频平台服务器 视频平台处理视频流 通过CDN分发到离用户最近的服务器上 最后视频流就能成功的到达用户设备 在视频从摄像头到服务器的过程中,RTMP将大量数据分割成小块并跨多个虚拟通道传输(内容分发网络CDN),在视频源和 RTMP 服务器之间提供了稳定和流畅的视频流。 2、RTSP 和 RTMP的优缺点 1)RTSP的优缺点 RTSP的优点: 1、轻松自定义流:可以通过结合不同的协议来开发自己的视频流解决方案。 2、分段流式传输:RTSP 流使观看者能够在下载完成之前访问的视频内容,而不必下载完整的视频以流式传输内容。 RTSP的缺点: 1、与 HTTP不兼容:没有简单的解决方案可以在 Web 浏览器中播放 RTSP流,因为 RTSP 旨在通过私有网络流式传输视频,必须借用额外软件。 2、使用率低:由于视频播放器和流媒体服务并未广泛支持 RTSP 流媒体,因为使用率比较低。 2)RTMP的优缺点 RTMP的优点: 1、低延迟:RTMP使用独占的 1935 端口,无需缓冲,可以实现低延迟。 2、适应性强:所有 RTMP 服务器都可以录制直播媒体流,同时还允许观众跳过部分广播并在直播开始后加入直播流。 3、灵活性:RTMP 支持整合文本、视频和音频,支持 MP3 和 AAC 音频流,也支持MP4、FLV 和 F4V 视频。 RTMP的缺点: 1、HTML5 不支持:标准HTML5 播放器不支持 RTMP 流。 2、容易受到带宽问题的影响:RTMP 流经常会出现低带宽问题,造成视频中断。 3、HTTP 不兼容:无法通过 HTTP 流式传输 RTMP,必须需要实现一个特殊的服务器,并使用第三方内容交付网络或使用流媒体视频平台。 3)RTSP和RTMP的比较 RTMP 和 RTSP协议 都是流媒体协议: RTMP(Real Time Message Protocol 实时消息传递协议) 有 Adobe 公司提出,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。 RTSP (Real-Time Stream Protocol 实时流协议)由Real Networks 和 Netscape共同提出的,基于文本的多媒体播放控制协议。RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。 RTMP 和 RTSP协议 的区别: RTSP虽然实时性最好,但是实现复杂,适合视频聊天和视频监控; RTMP强在浏览器支持好,加载flash插件后就能直接播放,所以非常火,相反在浏览器里播放rtsp就很困难了。 3、RTSP和RTMP如何选择 IP 摄像机选择RTSP:几乎所有 IP 摄像机都支持 RTSP,这是因为 IP 摄像机早在 RTMP 协议创建之前就已经存在,与 RTSP 和 IP 摄像机结合使用时,IP 摄像机本身充当 RTSP 服务器,这意味着要将摄像机连接到 IP 摄像机服务器并广播视频。 物联网设备选择RTSP:RTSP 通常内置在无人机或物联网软件中,从而可以访问视频源,它的好处之一是低延迟,确保视频中没有延迟,这对于无人机来说至关重要。 流媒体应用程序选择RTMP:比如各种短视频软件、视频直播软件等都内置了RTMP,RTMP 是为满足现代流媒体需求而设计的。 4、如何在浏览器上播放RTSP 直播的协议有:rtmp, http, rtsp等等。最常用的有二种:http, rtmp,当使用http协议的时候视频格式需要是m3u8或flv,下面作详细说明各种环境的优缺点。首先,rtsp不能使用于网页环境(包含PC端和移动端),那么直播只能选择rtmp或http。 rtmp协议只支持flashplayer,也就是只能在PC端(或安卓环境中安装了flashplayer组件,这种环境比较少)安装了flashplayer的情况下使用。按现在的趋势,flashplayer是要逐渐被淘汰掉的。当然,在中国还会存在相对长时间。 http协议的直播分二种格式,m3u8和flv。flv是一种即将被淘汰的直播格式。用来做直播已显的力不从心了。所以综合考虑,m3u8相对的比较好点,优点是支持移动端,并且支持PC端上安装了flashplayer的环境。缺点就如同rtmp一样。flashplayer并不是未来的发展趋势。另外一个缺点就是m3u8是有延迟的。并不能实时,实时传输方面不如rtmp协议。因为 m3u8的直播原理是将直播源不停的压缩成指定时长的ts文件(比如9秒,10秒一个ts文件)并同时实时更新m3u8文件里的列表以达到直播的效果。这样就会有一个至少9,10秒的时间延迟。如果压缩的过小,可能导致客户端网络原因致视频变卡。 实现rtsp转http并使用m3u8格式进行直播 具体过程:外接支持rtsp的webcam;使用ffplay命令来播放rtsp流,可以根据参数将实时视频写入到指定文件夹中(分段写入);xampp开启apache(开启80端口),可以让页面通过保存的m3u8文件实时访问webcam的监控界面。 二、ffmpeg将本地摄像头推流到RTSP服务器 2)RTMP工作原理 摄像头捕获视频 通过编码器将视频流传输到视频平台服务器 视频平台处理视频流 通过CDN分发到离用户最近的服务器上 最后视频流就能成功的到达用户设备 在视频从摄像头到服务器的过程中,RTMP将大量数据分割成小块并跨多个虚拟通道传输(内容分发网络CDN),在视频源和 RTMP 服务器之间提供了稳定和流畅的视频流。 2、RTSP 和 RTMP的优缺点 1)RTSP的优缺点 RTSP的优点: 1、轻松自定义流:可以通过结合不同的协议来开发自己的视频流解决方案。 2、分段流式传输:RTSP 流使观看者能够在下载完成之前访问的视频内容,而不必下载完整的视频以流式传输内容。 RTSP的缺点: 1、与 HTTP不兼容:没有简单的解决方案可以在 Web 浏览器中播放 RTSP流,因为 RTSP 旨在通过私有网络流式传输视频,必须借用额外软件。 2、使用率低:由于视频播放器和流媒体服务并未广泛支持 RTSP 流媒体,因为使用率比较低。 2)RTMP的优缺点 RTMP的优点: 1、低延迟:RTMP使用独占的 1935 端口,无需缓冲,可以实现低延迟。 2、适应性强:所有 RTMP 服务器都可以录制直播媒体流,同时还允许观众跳过部分广播并在直播开始后加入直播流。 3、灵活性:RTMP 支持整合文本、视频和音频,支持 MP3 和 AAC 音频流,也支持MP4、FLV 和 F4V 视频。 RTMP的缺点: 1、HTML5 不支持:标准HTML5 播放器不支持 RTMP 流。 2、容易受到带宽问题的影响:RTMP 流经常会出现低带宽问题,造成视频中断。 3、HTTP 不兼容:无法通过 HTTP 流式传输 RTMP,必须需要实现一个特殊的服务器,并使用第三方内容交付网络或使用流媒体视频平台。 3)RTSP和RTMP的比较 RTMP 和 RTSP协议 都是流媒体协议: RTMP(Real Time Message Protocol 实时消息传递协议) 有 Adobe 公司提出,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。 RTSP (Real-Time Stream Protocol 实时流协议)由Real Networks 和 Netscape共同提出的,基于文本的多媒体播放控制协议。RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。 RTMP 和 RTSP协议 的区别: RTSP虽然实时性最好,但是实现复杂,适合视频聊天和视频监控; RTMP强在浏览器支持好,加载flash插件后就能直接播放,所以非常火,相反在浏览器里播放rtsp就很困难了。 3、RTSP和RTMP如何选择 IP 摄像机选择RTSP:几乎所有 IP 摄像机都支持 RTSP,这是因为 IP 摄像机早在 RTMP 协议创建之前就已经存在,与 RTSP 和 IP 摄像机结合使用时,IP 摄像机本身充当 RTSP 服务器,这意味着要将摄像机连接到 IP 摄像机服务器并广播视频。 物联网设备选择RTSP:RTSP 通常内置在无人机或物联网软件中,从而可以访问视频源,它的好处之一是低延迟,确保视频中没有延迟,这对于无人机来说至关重要。 流媒体应用程序选择RTMP:比如各种短视频软件、视频直播软件等都内置了RTMP,RTMP 是为满足现代流媒体需求而设计的。 4、如何在浏览器上播放RTSP 直播的协议有:rtmp, http, rtsp等等。最常用的有二种:http, rtmp,当使用http协议的时候视频格式需要是m3u8或flv,下面作详细说明各种环境的优缺点。首先,rtsp不能使用于网页环境(包含PC端和移动端),那么直播只能选择rtmp或http。 rtmp协议只支持flashplayer,也就是只能在PC端(或安卓环境中安装了flashplayer组件,这种环境比较少)安装了flashplayer的情况下使用。按现在的趋势,flashplayer是要逐渐被淘汰掉的。当然,在中国还会存在相对长时间。 http协议的直播分二种格式,m3u8和flv。flv是一种即将被淘汰的直播格式。用来做直播已显的力不从心了。所以综合考虑,m3u8相对的比较好点,优点是支持移动端,并且支持PC端上安装了flashplayer的环境。缺点就如同rtmp一样。flashplayer并不是未来的发展趋势。另外一个缺点就是m3u8是有延迟的。并不能实时,实时传输方面不如rtmp协议。因为 m3u8的直播原理是将直播源不停的压缩成指定时长的ts文件(比如9秒,10秒一个ts文件)并同时实时更新m3u8文件里的列表以达到直播的效果。这样就会有一个至少9,10秒的时间延迟。如果压缩的过小,可能导致客户端网络原因致视频变卡。 实现rtsp转http并使用m3u8格式进行直播 可以参考RTSP Webcam to HLS Live Streaming using FFMPEG and XAMPP | PART 1 具体过程:外接支持rtsp的webcam;使用ffplay命令来播放rtsp流,可以根据参数将实时视频写入到指定文件夹中(分段写入);xampp开启apache(开启80端口),可以让页面通过保存的m3u8文件实时访问webcam的监控界面。 二、ffmpeg将本地摄像头推流到RTSP服务器 Note:ffmpeg将本地摄像头推流到rtsp的8554端口上(rtsp-simple-server在处理rtsp时,监听的是8554端口,指定其他端口ffmpeg推流会失败) 1、安装ffmpeg和rtsp-simple-server 大致实现过程:使用rtsp-simple-server作为中转服务器,用于ffmpeg(写客户端)推流,后台服务(读客户端)拉流 1)windows安装rtsp-simple-server和ffmpeg 参考windows环境下,搭建RTSP视频推流服务器即可(记得修改rtsp-simple-server.yml配置文件中的ip地址) 2)linux安装rtsp-simple-server和ffmpeg 安装rtsp-simple-server_v0.20.2_linux_amd64.tar.gz(这里以x86 CPU为例),解压后修改rtsp-simple-server.yml配置文件中的ip地址(vim替换命令为%s:/127.0.0.1/192.168.132.100/g),执行./rtsp-simple-server即可启动rtsp服务器。 如果要想在后台启动rtsp服务器,执行如下命令 nohup ./rtsp-simple-server >> rtsp_server.log 2>&1 & #非挂起启动命令 tail rtsp_server.log #查看rtsp-simple-server启动日志文件 ps -aux | grep rtsp_simple_server #查看rtsp-simple-server进程 dpf 2116 0.0 0.0 13140 1016 pts/0 S+ 04:54 0:00 grep --color=auto rtsp_simple_server ffmpeg安装,解压后执行./ffmpeg即可使用ffmpeg,参考在linux下使用ffmpeg方法 Note:在linux中关于tar.gz,xz,tar的解压操作请自行上网查阅。 2、将本地摄像头推流到RTSP服务器 大致实现过程:使用rtsp-simple-server作为中转服务器,用于ffmpeg(写客户端)推流,后台服务(读客户端)拉流 这里以windows系统作为演示,先解压rtsp-simple-server_v0.19.1_windows_amd64.zip,打开rtsp-simple-server.exe监听RTSP下TCP的8554端口,然后通过ffmpeg将指定摄像头采集到的图像帧向该端口进行推流(即多个客户端与服务器端的socket通信) 1)写客户端:ffmpeg ffmpeg推流视频文件到指定ip + 端口上(-stream_loop -1): ffmpeg -re -stream_loop -1 -i 你视频的文件名 -c copy -f rtsp rtsp://127.0.0.1:8554/videoFile_test 1 ffmpeg将本地摄像头的视频流推送到指定ip + 端口上,则需要 //获取本地摄像头名称 ffmpeg -list_devices true -f dshow -i dummy //ffmpeg向指定端口推流(我的是Integrated Camera) ffmpeg -f dshow -i video="自己的摄像头驱动名称" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/camera_test //libx264编码 ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/camera_test )服务器端:RTSP服务器 初启动效果如下: 3)读客户端:读客户端可以通过两种方式来实现 安装VLC,选择流数据播放模式,输入rtsp://127.0.0.1:8554/camera_test,rtsp://127.0.0.1:8554/videoFile_test即可播放; 亦或者使用如下python代码: import cv2 def capture_video(rtsp_path): name = rtsp_path.split("/")[-1] capture = cv2.VideoCapture(rtsp_path) while capture.isOpened(): ret, frame = capture.read() if not ret: break cv2.imshow(name, frame) if cv2.waitKey(50) == 27: break if __name__ == '__main__': # rtsp_paths = ['rtsp://127.0.0.1:8554/videoFile_test','rtsp://127.0.0.1:8554/camera_test'] rtsp_paths = ['rtsp://127.0.0.1:8554/videoFile_test'] for rtsp_path in rtsp_paths: capture_video(rtsp_path) cv2.waitKey(0) cv2.destroyAllWindows() 此时会出现两个createby和reading,即开启两个进程进行视频流的读取 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/aisheisadas/article/details/137669624
-
一、缓冲池 15.5.1 Buffer Pool 缓冲池是主内存中的一个区域,InnoDB在访问表和索引数据时会在该区域进行缓存。缓冲池允许直接从内存访问频繁使用的数据,这加快了处理速度。在专用服务器上,通常会将高达80%的物理内存分配给缓冲池。 为了提高高容量读取操作的效率,缓冲池被划分为可能容纳多行的页面。为了提高缓存管理的效率,缓冲池被实现为页面的链接列表;很少使用的数据使用最近最少使用(LRU)算法的变体从高速缓存中老化。 了解如何利用缓冲池将频繁访问的数据保存在内存中是MySQL调优的一个重要方面。 二、innodb_buffer_pool_size 15.8.3.1 Configuring InnoDB Buffer Pool Size innodb_buffer_pool_size=innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances innodb_buffer_pool_size 默认是128M, 缓冲池的大小(以字节为单位),即InnoDB缓存表和索引数据的内存区域。默认值为134217728字节(128MB)。最大值取决于CPU架构;32位系统上的最大值为4294967295(2^32-1),64位系统上为18446744073709551615(2^64-1)。在32位系统上,CPU体系结构和操作系统可能会施加比所述最大值更低的实际最大大小。当缓冲池的大小大于1GB时,将innodb_buffer_pool_instances设置为大于1的值可以提高繁忙服务器上的可扩展性。 较大的缓冲池需要较少的磁盘I/O才能多次访问相同的表数据。在专用数据库服务器上,可以将缓冲池大小设置为计算机物理内存大小的80%。配置缓冲池大小时,请注意以下潜在问题,并准备在必要时缩减缓冲池的大小。 对物理内存的竞争可能会导致操作系统中出现分页。 InnoDB为缓冲区和控制结构保留了额外的内存,因此分配的总空间比指定的缓冲池大小大大约10%。 缓冲池的地址空间必须是连续的,这在具有在特定地址加载DLL的Windows系统上可能是一个问题。 初始化缓冲池的时间与其大小大致成正比。在具有大型缓冲池的实例上,初始化时间可能很长。为了缩短初始化周期,可以在服务器关闭时保存缓冲池状态,并在服务器启动时恢复。参见第15.8.3.6节“保存和恢复缓冲池状态”。 当您增加或减少缓冲池大小时,操作是以块为单位执行的。区块大小由innodb_buffer_pool_Chunk_size变量定义,默认值为128 MB。 缓冲池大小必须始终等于或等于innodb_Buffer_pool_chunk_size*innodb_Buffer_pool_instances的倍数。如果将缓冲池大小更改为不等于innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances或其倍数的值,则缓冲池大小将自动调整为等于innodd_buffer_pool_chunk_size*innodb_buffer_poor_instances或其多倍的值。 innodb_buffer_pool_size可以动态设置,这允许您在不重新启动服务器的情况下调整缓冲池的大小。Innodb_buffer_pool_resize_status状态变量报告在线缓冲池大小调整操作的状态。有关更多信息,请参阅第15.8.3.1节“配置InnoDB缓冲池大小”。 如果启用了innob_dedicated_server,则如果未显式定义innodb_buffer_pool_size值,则会自动配置该值。有关更多信息,请参阅第15.8.12节“启用专用MySQL服务器的自动配置”。 innodb_buffer_pool_chunk_size 默认是128M innodb_buffer_pool_instances 默认是8(如果innodb_buffer_pool_size < 1GB,则是1) 15.8.3.2 Configuring Multiple Buffer Pool Instances 2.1查看现有配置 /opt/mysql-8.0.32/bin/mysql -h 127.0.0.1 -u root -p mysql> show variables like 'innodb_buffer_pool%'; +-------------------------------------+----------------+ | Variable_name | Value | +-------------------------------------+----------------+ | innodb_buffer_pool_chunk_size | 134217728 | | innodb_buffer_pool_dump_at_shutdown | ON | | innodb_buffer_pool_dump_now | OFF | | innodb_buffer_pool_dump_pct | 25 | | innodb_buffer_pool_filename | ib_buffer_pool | | innodb_buffer_pool_in_core_file | ON | | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_load_abort | OFF | | innodb_buffer_pool_load_at_startup | ON | | innodb_buffer_pool_load_now | OFF | | innodb_buffer_pool_size | 134217728 | +-------------------------------------+----------------+ 11 rows in set (0.01 sec) 2.2简单优化 把innodb_buffer_pool_size设置为1G。 专用服务器可以设为内存70%以上,个人建议innodb_buffer_pool_size设置为系统内存的50%。 最好设置为:innodb_buffer_pool_size=innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances. 否则,innodb_buffer_pool_size自动调整可能是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的两倍。 my.cnf # innodb缓冲池大小 innodb_buffer_pool_size=1G # innodb缓冲池块大小 innodb_buffer_pool_chunk_size=128M # innodb缓冲池实例数 innodb_buffer_pool_instances=8 重启数据库 调整后: mysql> show variables like 'innodb_buffer_pool%'; +-------------------------------------+----------------+ | Variable_name | Value | +-------------------------------------+----------------+ | innodb_buffer_pool_chunk_size | 134217728 | | innodb_buffer_pool_dump_at_shutdown | ON | | innodb_buffer_pool_dump_now | OFF | | innodb_buffer_pool_dump_pct | 25 | | innodb_buffer_pool_filename | ib_buffer_pool | | innodb_buffer_pool_in_core_file | ON | | innodb_buffer_pool_instances | 8 | | innodb_buffer_pool_load_abort | OFF | | innodb_buffer_pool_load_at_startup | ON | | innodb_buffer_pool_load_now | OFF | | innodb_buffer_pool_size | 1073741824 | +-------------------------------------+----------------+ 11 rows in set (0.01 sec) 这些参数也支持在线调整,可考虑在业务低谷时调整。 Configuring InnoDB Buffer Pool Size Online 2.3配置是否合适 5.1.4 Server Option, System Variable, and Status Variable Reference 2.3.1查询缓存命中率: mysql> show status like 'Innodb_buffer_pool_read%'; +---------------------------------------+--------------+ | Variable_name | Value | +---------------------------------------+--------------+ | Innodb_buffer_pool_read_ahead_rnd | 0 | | Innodb_buffer_pool_read_ahead | 20294922 | | Innodb_buffer_pool_read_ahead_evicted | 1240192 | | Innodb_buffer_pool_read_requests | 299216558100 | | Innodb_buffer_pool_reads | 1167281260 | +---------------------------------------+--------------+ Innodb_buffer_pool_read_requests:逻辑读取请求的数量。 Innodb_buffer_pool_reads:InnoDB无法从缓冲池满足的逻辑读取数,必须直接从磁盘读取。 percent = innodb_buffer_pool_read_requests / (innodb_buffer_pool_reads + innodb_buffer_pool_read_requests) * 100% 上述的 percent>=99%,则表示当前的buffer pool满足当前的需求。否则需要考虑增加 innodb_buffer_pool_size的值。 2.3.2缓存数据页占比: mysql> show status like 'Innodb_buffer_pool_pages%'; +----------------------------------+----------+ | Variable_name | Value | +----------------------------------+----------+ | Innodb_buffer_pool_pages_data | 7003 | | Innodb_buffer_pool_pages_dirty | 0 | | Innodb_buffer_pool_pages_flushed | 19906085 | | Innodb_buffer_pool_pages_free | 1021 | | Innodb_buffer_pool_pages_misc | 167 | | Innodb_buffer_pool_pages_total | 8191 | +----------------------------------+----------+ innodb_buffer_pool_pages_data:InnoDB缓冲池中包含数据的页数。这个数字包括脏页和干净页。(使用压缩表时,报告的Innodb_buffer_pool_pages_数据值可能大于) percent = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100% 上述的 percent>=95% 则表示当前的innodb_buffer_pool_size满足当前的需求。否则可以考虑增加 innodb_buffer_pool_size的值。 2.4如何判断MySQL使用内存会不会过高 可能还有有一些担心,所有参数设置完毕后MySQL的占用会过高导致内存溢出,那么我们可以算一下他会不会太高。 通过下面的SQL语句: SELECT ((@@key_buffer_size+@@innodb_buffer_pool_size+@@innodb_log_buffer_size)/1024/1024)+((@@read_rnd_buffer_size+@@read_buffer_size+@@myisam_sort_buffer_size+@@sort_buffer_size+@@join_buffer_size)/1024/1024*@@max_connections); 最终单位为MB 若该值不超过系统可用内存,说明还好(理论) 2.5其他命令 mysql> show status like 'Innodb_buffer_pool%'; +-------------------------------------------+--------------------------------------------------+ | Variable_name | Value | +-------------------------------------------+--------------------------------------------------+ | Innodb_buffer_pool_dump_status | Dumping of buffer pool not started | | Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 230316 18:50:53 | | Innodb_buffer_pool_resize_status | | | Innodb_buffer_pool_resize_status_code | 0 | | Innodb_buffer_pool_resize_status_progress | 0 | | Innodb_buffer_pool_pages_data | 11658 | | Innodb_buffer_pool_bytes_data | 191004672 | | Innodb_buffer_pool_pages_dirty | 0 | | Innodb_buffer_pool_bytes_dirty | 0 | | Innodb_buffer_pool_pages_flushed | 80730 | | Innodb_buffer_pool_pages_free | 53706 | | Innodb_buffer_pool_pages_misc | 172 | | Innodb_buffer_pool_pages_total | 65536 | | Innodb_buffer_pool_read_ahead_rnd | 0 | | Innodb_buffer_pool_read_ahead | 2529 | | Innodb_buffer_pool_read_ahead_evicted | 0 | | Innodb_buffer_pool_read_requests | 115191477 | | Innodb_buffer_pool_reads | 6644 | | Innodb_buffer_pool_wait_free | 0 | | Innodb_buffer_pool_write_requests | 1598891 | +-------------------------------------------+--------------------------------------------------+ 20 rows in set (0.00 sec) mysql> show engine innodb status \G mysql> SHOW GLOBAL STATUS \G 太多了。 三、其他优化: # 连接操作缓冲区,默认256K join_buffer_size = 8M # 排序操作缓冲区,默认256K sort_buffer_size = 8M # 顺序读取缓冲区,默认128K read_buffer_size = 4M # 随机读取缓冲区,默认128K read_rnd_buffer_size = 8M mysql> show variables like '%buffer_size%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | bulk_insert_buffer_size | 8388608 | | innodb_ddl_buffer_size | 1048576 | | innodb_log_buffer_size | 16777216 | | innodb_sort_buffer_size | 1048576 | | join_buffer_size | 262144 | | key_buffer_size | 8388608 | | myisam_sort_buffer_size | 8388608 | | preload_buffer_size | 32768 | | read_buffer_size | 131072 | | read_rnd_buffer_size | 262144 | | select_into_buffer_size | 131072 | | sort_buffer_size | 262144 | +-------------------------+----------+ 12 rows in set (0.01 sec) 四、参考: Mysql优化之innodb_buffer_pool_size篇 MySQL参数 之 innodb_buffer_pool_size MySQL中innodb_buffer_pool_size的配置 MySQL基准测试innodb_buffer_pool_size对性能影响 五、文档 Chapter 8 Optimization 8.1 Optimization Overview 8.2 Optimizing SQL Statements 8.3 Optimization and Indexes 8.4 Optimizing Database Structure 8.5 Optimizing for InnoDB Tables 8.6 Optimizing for MyISAM Tables 8.7 Optimizing for MEMORY Tables 8.8 Understanding the Query Execution Plan 8.9 Controlling the Query Optimizer 8.10 Buffering and Caching 8.11 Optimizing Locking Operations 8.12 Optimizing the MySQL Server 8.13 Measuring Performance (Benchmarking) 8.14 Examining Server Thread (Process) Information 8.5 Optimizing for InnoDB Tables 8.5.1 Optimizing Storage Layout for InnoDB Tables 8.5.2 Optimizing InnoDB Transaction Management 8.5.3 Optimizing InnoDB Read-Only Transactions 8.5.4 Optimizing InnoDB Redo Logging 8.5.5 Bulk Data Loading for InnoDB Tables 8.5.6 Optimizing InnoDB Queries 8.5.7 Optimizing InnoDB DDL Operations 8.5.8 Optimizing InnoDB Disk I/O 8.5.9 Optimizing InnoDB Configuration Variables 8.5.10 Optimizing InnoDB for Systems with Many Tables 14.8.3 InnoDB Buffer Pool Configuration 14.8.3.1 Configuring InnoDB Buffer Pool Size 14.8.3.2 Configuring Multiple Buffer Pool Instances 14.8.3.3 Making the Buffer Pool Scan Resistant 14.8.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 14.8.3.5 Configuring Buffer Pool Flushing 14.8.3.6 Saving and Restoring the Buffer Pool State ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/haveqing/article/details/130358261
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签