云服务器内容精选
-
产品优势 GaussDB (DWS)数据库内核自主研发,兼容PostgreSQL的数据库内核引擎,从单机OLTP数据库改造为企业级MPP(大规模并行处理)架构的OLAP 分布式数据库 ,其主要面向海量数据分析场景。 GaussDB(DWS)与传统 数据仓库 相比,主要有以下特点与显著优势,可解决多行业超大规模数据处理与通用平台管理问题: 易使用 一站式可视化便捷管理 GaussDB(DWS)让您能够轻松完成从项目概念到生产部署的整个过程。通过使用GaussDB(DWS)管理控制台,您不需要安装数据仓库软件,也不需要部署数据仓库服务器,就可以在几分钟之内获得高性能、高可靠的企业级数据仓库集群。 您只需单击几下鼠标,就可以轻松完成应用程序与数据仓库的连接、数据备份、数据恢复、数据仓库资源和性能监控等运维管理工作。 与大数据无缝集成 您可以使用标准SQL查询HDFS、 对象存储服务 (Object Storage Service,OBS)上的数据,数据无需搬迁。 提供一键式异构数据库迁移工具 GaussDB(DWS)提供配套的迁移工具,可支持MySQL、Oracle和Teradata的SQL脚本迁移到GaussDB(DWS)。 高性能 云化分布式架构 GaussDB(DWS)采用全并行的MPP架构数据库,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。 查询高性能,万亿数据秒级响应 GaussDB(DWS)通过算子并行执行、向量化执行引擎实现指令在寄存器并行执行,以及LLVM动态编译减少查询时冗余的条件逻辑判断,助力数据查询性能提升。 GaussDB(DWS)支持行列混合存储,可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。 数据加载快 GaussDB(DWS)提供了GDS极速并行大规模数据加载工具。 列存下的数据压缩 对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。 GaussDB(DWS)列存储压缩支持Delta Value Encoding、Dictionary、RLE 、LZ4、ZLIB等压缩算法,且能够根据数据特征自适应的选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。 易扩展 按需扩展:Shared-Nothing开放架构,可随时根据业务情况增加节点,扩展系统的数据存储能力和查询分析性能。 扩容后性能线性提升:容量和性能随集群规模线性提升,线性比0.8。 扩容不中断业务:扩容过程中支持数据增、删、改、查,及DDL操作(Drop/Truncate/Alter table),表级别扩容技术,扩容期间业务不中断、无感知。 支持在线升级:8.1.1及以上源版本支持大版本在线升级,8.1.3及以上源版本支持补丁在线升级,升级期间用户无需停止业务,业务存在闪级秒断。 高可靠 事务管理 支持事务块,用户可以通过start transaction命令显式启动一个事务块。 支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。 分布式事务管理。支持全局事务信息管理,包括gxid、snapshot、timestamp的管理,分布式事务状态管理,gxid溢出的处理。 分布式事务支持ACID特性(Atomicity,Consistency,Isolation,Durability),数据强一致保证。 支持分布式死锁预防,保证在出现死锁时自动解锁或者预防死锁。 全方位HA设计 GaussDB(DWS)所有的软件进程均有主备保证,集群的协调节点(CN)、数据节点(DN)等逻辑组件全部有主备保证,能够保证在任意单点物理故障的情况下系统依然能够保证数据可靠、一致,同时还能对外提供服务。 安全 GaussDB(DWS)支持数据透明加密,同时可与数据库安全服务(DBSS)对接,基于网络隔离及安全组规则,保护系统和用户隐私及数据安全。GaussDB(DWS)还支持自动数据全量、增量备份,提升数据可靠性。 低成本 按需付费:GaussDB(DWS)按实际使用量和使用时长计费。您需要支付的费率很低,只需为实际消耗的资源付费。 门槛低:您无需前期投入较多固定成本,可以从低规格的数据仓库实例起步,后续随时根据业务情况弹性伸缩所需资源,按需开支。
-
数据库安全设置 账户说明 您在创建DWS集群时,系统会自动为集群创建如下账户,用于给数据库提供完善的后台运维管理服务。 dbadmin:系统管理员账户,首次登录DWS数据库使用,用于业务数据库创建、普通用户创建、权限分配等。 如果开通了三权分立,则除了系统管理员dbadmin,还会生成安全管理员、审计管理员账户,账户名称由用户自定义,详情参见开启DWS数据库用户三权分立。 Ruby:系统默认运维账户,非云服务提供商运维人员不可使用。 om_user_集群ID前8位:其他运维账户,且系统赋予了gs_role_analyze_any,gs_role_vacuum_any,gs_role_read_all_stats,gs_role_signal_backend等预置权限,用于故障定位,非云服务提供商运维人员不可使用,详情参见授权DWS集群运维账号 。 账户密码复杂度设置 数据仓库服务的数据库系统管理员dbadmin密码在创建DWS集群时进行设定,且DWS控制台为dbadmin用户提供了密码复杂度校验,校验不通过,无法设定密码。 其复杂度要求请参见创建DWS集群中描述的密码复杂度要求。 其他普通数据库用户也相应设置了密码安全策略,系统默认安全策略如下: 长度为8~32个字符。 至少包含大写字母、小写字母、数字或特殊字符中三种的组合。 不能是用户名和用户名反序,此条要求为非大小写敏感。 不能是当前密码、当前密码的反序。 为避免恶意人员轻易破解您的数据库密码,请按照界面提示和要求设置足够复杂度密码,并定期修改。 自定义密码策略 以上默认安全策略支持用户修改,详情参见自定义密码策略。 账户锁定及设置密码过期策略 数据库用户密码有效期:通过password_effect_time控制,一旦密码过了有效期,则系统会提醒修改密码。 数据库用户密码输入错误次数:通过failed_login_attempts控制,当用户输错次数超过该设定值,账户会自动锁定,需要系统管理员进行解锁。 账户锁定后自动解锁时间:通过password_lock_time控制,锁定时间超过设定值,账户会自行解锁。 以上参数可在DWS管理控制台进行设定,设定方法参见修改GaussDB(DWS)集群GUC参数。 重置账户密码 系统管理员dbadmin账户被锁定或忘记密码时,可通过DWS控制台进行重置密码操作。 普通用户密码重置可通过系统管理员dbadmin在后台通过SQL命令重置,重置命令示例如下。参见密码设置和修改。 1 ALTER USER joe IDENTIFIED BY 'password';
-
SSL传输加密 GaussDB(DWS)支持SSL标准协议,SSL协议是安全性更高的协议标准,它们加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。为支持SSL连接方式,GaussDB(DWS)已经从CA认证中心申请到正式的服务器、客户端的证书和密钥(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt,CA根证书名称为cacert.pem)。 SSL连接方式的安全性高于普通模式,集群默认开启SSL功能允许来自客户端的SSL连接或非SSL连接,从安全性考虑,建议用户在客户端使用SSL连接方式。并且GaussDB(DWS)服务器端的证书、私钥以及根证书已经默认配置完成。 了解更多请参见使用SSL进行安全的TCP/IP连接。
-
配置安全组 安全组是一个逻辑上的分组,为具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当实例加入该安全组后,即受到这些访问规则的保护。 安全组中包括入方向规则和出方向规则,您可以针对每条入方向规则指定来源、端口和协议,针对出方向规则指定目的地、端口和协议,用来控制安全组内实例入方向和出方向的网络流量。 数据库开放弹性公网EIP后,如果公网上的恶意人员获取到您的EIP DNS和数据库端口,那么便可尝试破解您的数据库并进行进一步破坏。因此,强烈建议您保护好EIP DNS、数据库端口、数据库账号和密码等信息,并通过DWS的安全组限定源IP,保障只允许可信源连接数据库。 安全组在创建DWS集群时配置,您也可以选择系统默认配置的安全组,默认只放开8000的端口,集群创建后,支持更改安全组规则,也支持切换其他安全组。
-
使用数据安全服务DBSS(建议) 数据库安全服务(Database Security Service,DBSS)是一个智能的数据库安全服务,基于机器学习机制和大数据分析技术,提供数据库审计,SQL注入攻击检测,风险操作识别等功能,保障云上数据库的安全。 建议使用DBSS来提供扩展的数据安全能力,详情请参考数据库安全服务。 优势 助力企业满足等保合规要求。 满足等保测评数据库审计需求。 满足国内外安全法案合规需求,提供满足数据安全标准(例如Sarbanes-Oxley)的合规报告。 支持备份和恢复数据库审计日志,满足审计数据保存期限要求。 支持风险分布、会话统计、会话分布、SQL分布的实时监控能力。 提供风险行为和攻击行为实时告警能力,及时响应数据库攻击。 帮助您对内部违规和不正当操作进行定位追责,保障数据资产安全。 数据库安全审计采用数据库旁路部署方式,在不影响用户业务的前提下,可以对数据库进行灵活的审计。 基于数据库风险操作,监视数据库登录、操作类型(数据定义、数据操作和数据控制)和操作对象,有效对数据库进行审计。 从风险、会话、SQL注入等多个维度进行分析,帮助您及时了解数据库状况。 提供审计报表模板库,可以生成日报、周报或月报审计报表(可设置报表生成频率)。同时,支持发送报表生成的实时告警通知,帮助您及时获取审计报表。
-
原因分析 系统连接数量超过了最大连接数量,会显示如下错误信息。 1 2 gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W password -r gsql: FATAL: sorry, too many clients already 用户不具备访问该数据库的权限,会显示如下错误信息。 1 2 3 gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W password -r gsql: FATAL: permission denied for database "human_resource" DETAIL: User does not have CONNECT privilege. 网络连接故障。
-
解决办法 系统连接超过最大连接数量。 用户可在GaussDB(DWS) 控制台设置最大连接数max_connections。 max_connections设置方法如下: 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。 单击“参数修改”页签,修改参数“max_connections”的值,然后单击“保存”。 在“修改预览”窗口,确认修改无误后,单击“保存”。 关于查看用户会话连接数的方法如表1。 表1 查看会话连接数 描述 命令 查看指定用户的会话连接数上限。 执行如下命令查看连接到指定用户user1的会话连接数上限。其中,-1表示没有对用户user1设置连接数的限制。 1 2 3 4 5 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row) 查看指定用户已使用的会话连接数。 执行如下命令查看指定用户user1已使用的会话连接数。其中,1表示user1已使用的会话连接数。 1 2 3 4 5 6 SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='user1'; count ------- 1 (1 row) 查看指定数据库的会话连接数上限。 执行如下命令查看连接到指定数据库db_demo的会话连接数上限。其中,-1表示没有对数据库db_demo设置连接数的限制。 1 2 3 4 5 6 SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='db_demo'; datname | datconnlimit ----------+-------------- db_demo | -1 (1 row) 查看指定数据库已使用的会话连接数。 执行如下命令查看指定数据库db_demo上已使用的会话连接数。其中,1表示数据库db_demo上已使用的会话连接数。 1 2 3 4 5 SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='db_demo'; count ------- 1 (1 row) 查看所有用户已使用会话连接数。 执行如下命令查看所有用户已使用的会话连接数。 1 2 3 4 5 SELECT COUNT(*) FROM PG_STAT_ACTIVITY; count ------- 10 (1 row) 用户不具备访问该数据库的权限。 使用管理员用户dbadmin连接数据库。 1 gsql -d human_resource -h 10.168.0.74 -U dbadmin -p 8000 -W password -r 赋予user1用户访问数据库的权限。 1 GRANT CONNECT ON DATABASE human_resource TO user1; 实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。例如,用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具会有相应的提示信息。 1 2 3 4 5 gsql -d human_resource -p 8000 gsql: FATAL: database "human_resource" does not exist gsql -d human_resource -U user1 -W password -p 8000 gsql: FATAL: Invalid username/password,login denied. 网络连接故障。 请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系技术支持工程师提供技术支持。 1 2 3 4 5 6 7 8 ping -c 4 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. From 10.10.10.1: icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=3 Destination Host Unreachable From 10.10.10.1 icmp_seq=4 Destination Host Unreachable --- 10.10.10.1 ping statistics --- 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms
-
问题现象 连接GaussDB(DWS) 数据库时报错,提示客户端连接数太多。 使用gsql等SQL客户端工具连接数据库时,出现如下报错信息: 1 FATAL: Already too many clients, active/non-active/reserved: 5/508/3. 使用客户端并发连接数据库时,出现如下报错信息: 1 2 [2019/12/25 08:30:35] [ERROR] ERROR: pooler: failed to create connections in parallel mode for thread 140530192938752, Error Message: FATAL: dn_6001_6002: Too many clients already, active/non-active: 468/63. FATAL: dn_6001_6002: Too many clients already, active/non-active: 468/63.
-
处理方法 可优先通过如下方法进行应急处理: 临时将所有non-active的连接释放掉。 1 SELECT PG_TERMINATE_BACKEND(pid) from pg_stat_activity WHERE state='idle'; 在GaussDB(DWS)控制台设置会话闲置超时时长session_timeout,在闲置会话超过所设定的时间后服务端将主动关闭连接。 session_timeout默认值为600秒,设置为0表示关闭超时限制,一般不建议设置为0。 session_timeout设置方法如下: 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。 单击“参数修改”页签,修改参数“session_timeout”,然后单击“保存”。 在“修改预览”窗口,确认修改无误后,单击“保存”。 如果上述方式未能满足业务需求,可继续参考以下方式进行处理: 当前数据库连接已经超过了最大连接数场景处理方式: 查看CN上的连接来自哪里,总数量以及是否超过当前max_connections(默认值CN节点为800,DN节点为5000)。 1 SELECT coorname, client_addr, count(1) FROM pgxc_stat_activity group by coorname, client_addr order by coorname; 判断是否可以调大max_connections,调整策略如下: 调大CN的max_connections会造成并发连接到DN的查询变多,所以需要同步调大DN的max_connections和comm_max_stream。 CN/DN的max_connections一般按照原来的2倍调大,原值比较小的集群可以调节到4倍。 为避免在准备步骤失败,max_prepared_transactions的值不能小于max_connections,建议至少将其设置为等于max_connections,这样每个会话都可以有一个等待中的预备事务。 若上一步中判断可以调整max_connections,则可通过管理控制台调整最大连接数max_connections。 在管理控制台上,集群“基本信息”页面,单击“参数修改”页签,修改参数“max_connections”为合适的值,然后单击“保存”。 针对设置了用户最大连接数的场景处理方式: 在创建用户时由CREATE ROLE命令的CONNECTION LIMIT connlimit子句直接设定,也可以在设定以后用ALTER ROLE的CONNECTION LIMIT connlimit子句修改。 使用PG_ROLES视图查看指定用户的最大连接数。 1 2 3 4 5 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='role1'; rolname | rolconnlimit ---------+-------------- role1 | 10 (1 row) 修改用户的最大连接数。 1 ALTER ROLE role1 connection limit 20;
-
场景三:系统表过大导致VACUUM FULL执行慢 在排除I/O和网络问题后,对空表执行VACUUM FULL,即使是空表执行VACUUM FULL也比较慢,则说明是系统表较大导致。因为VACUUM FULL任意一张表时,都会扫描pg_class、pg_partition、pg_proc三张系统表,当这三个系统表过大时,也会导致VACUUM FULL执行较慢。 处理方法:GaussDB(DWS)支持对系统表执行VACUUM FULL,但是会产生八级锁,涉及相关系统表的业务会被阻塞,注意要在业务空闲时间窗或停止业务期间且没有DDL操作时清理系统表。 有关清理系统表的操作,请参考哪些系统表不能做VACUUM FULL。
-
场景一:存在锁等待导致VACUUM FULL执行慢 8.1.x及以上集群版本的处理方法: 通过查询pgxc_lock_conflicts视图查看锁冲突情况。 1 SELECT * FROM pgxc_lock_conflicts; 在查询结果中查看granted字段为“f”,表示VACUUM FULL语句正在等待其他锁。granted字段为“t”,表示INSERT语句是持有锁。nodename,表示锁产生的位置,即CN或DN位置,例如cn_5001,继续执行2。 如果查询结果为0 rows,则表示不存在锁冲突。则需排查其它场景。 根据语句内容判断是终止持锁语句后继续执行VACUUM FULL还是在业务低峰期选择合适的时间执行VACUUM FULL。 如果要终止持锁语句,则执行以下语句。pid从上述步骤1获取,cn_5001为所查询到的nodename。 1 execute direct on (cn_5001) 'SELECT PG_TERMINATE_BACKEND(pid)'; 语句终止后,再重新执行VACUUM FULL。 1 VACUUM FULL table_name; 8.0.x及以前版本的处理方法: 在数据库中执行语句,获取VACUUM FULL操作对应的query_id。 1 SELECT * FROM pgxc_stat_activity WHERE query LIKE '%vacuum%'AND waiting = 't'; 根据1获取的query_id,执行以下语句查看是否存在锁等待。 1 SELECT * FROM pgxc_thread_wait_status WHERE query_id = {query_id}; 查询结果中“wait_status”存在“acquire lock”表示存在锁等待。同时查看“node_name”显示在对应的CN或DN上存在锁等待,记录相应的CN或DN名称,例如cn_5001或dn_600x_600y,继续执行3。 查询结果中“wait_status”不存在“acquire lock”,排除锁等待情况,继续排查其它场景。 执行以下语句,到等锁的对应CN或DN上从pg_locks中查看VACUUM FULL操作在等待哪个锁。以cn_5001为例,如果在DN上等锁,则改为相应的DN名称。pid为2获取的tid。 回显中记录relation的值。 1 execute direct on (cn_5001) 'SELECT * FROM pg_locks WHERE pid = {tid} AND granted = ''f'''; 根据获取的relation,从pg_locks中查看当前持有锁的pid。relation从3获取。 1 execute direct on (cn_5001) 'SELECT * FROM pg_locks WHERE relation = {relation} AND granted = ''t'''; 根据pid,执行以下语句查到对应的SQL语句。pid从4获取。 1 execute direct on (cn_5001) 'SELECT query FROM pg_stat_activity WHERE pid ={pid}'; 根据语句内容判断是终止持锁语句后继续执行VACUUM FULL还是在业务低峰期选择合适的时间执行VACUUM FULL。 如果要终止持锁语句,则执行以下语句。pid从上述4获取,cn_5001为所查询到的nodename。 1 execute direct on (cn_5001) 'SELECT PG_TERMINATE_BACKEND(pid)'; 语句终止后,再执行VACUUM FULL。 1 VACUUM FULL table_name;
-
场景四:列存表使用了局部聚簇(PCK)时,VACUUM FULL执行慢 对列存表执行VACUUM FULL时,如果存在PCK,就会将PARTIAL_CLUSTER_ROWS中多条记录全都加载到内存中再进行排序,如果表较大或psort_work_mem设置较小,会导致PCK排序时产生下盘(数据库选择将临时结果暂存到磁盘),进行外部排序;一旦进行外部排序,时间消耗就会增加很多。 处理方法:根据表中数据的tuple length,合理调整PARTIAL_CLUSTER_ROWS和psort_work_mem的大小。 执行以下语句查看表定义。回显中存在“PARTIAL CLUSTER KEY”信息,表示存在PCK。 1 SELECT * FROM pg_get_tabledef('table name'); 登录DWS管理控制台,左侧选择“集群管理”。 单击对应的集群名称,进入集群详情页。 左侧选择“参数修改”,在搜索栏中输入psort_work_mem进行搜索,将CN参数值和DN参数值同时调大,单击“保存”。 再重新执行VACUUM FULL操作。
-
场景4:无索引、有索引不走 某一次点查询,Seq Scan扫描需要3767ms,因涉及从4096000条数据中获取8240条数据,符合索引扫描的场景(海量数据中寻找少量数据),在对过滤条件列增加索引后,计划依然是Seq Scan而没有走Index Scan。 对目标表ANALYZE后,计划能够自动选择索引,性能从3s+优化到2ms+,极大降低I/O消耗。 常见场景:行存大表的查询场景,从大量数据中访问极少数据,没走索引扫描而是走顺序扫描,导致I/O效率低,不走索引常见有两种情况: 过滤条件列上没建索引。 有索引但是计划没选索引扫描。 触发因素: 常用过滤条件列没有建索引。 表中数据因执行DML操作后产生数据变化未及时ANALYZE,导致优化器无法选择索引扫描计划,ANALYZE介绍参见ANALYZE 。 处理方式: 对行存表常用过滤列增加索引,索引基本设计原则: 索引列选择distinct值多,且常用于过滤条件,过滤条件多时可以考虑建组合索引,组合索引中distinct值多的列排在前面,索引个数不宜超过3个。 大量数据带索引导入会产生大量I/O,如果该表涉及大量数据导入,需严格控制索引个数,建议导入前先将索引删除,导入完成后再重新建索引。 对频繁做DML操作的表,业务中加入及时ANALYZE,主要场景: 表数据从无到有。 表频繁进行INSERT/UPDATE/DELETE。 表数据即插即用,需要立即访问且只访问刚插入的数据。
-
场景5:无分区、有分区不剪枝 例如某业务表进场使用createtime时间列作为过滤条件获取特定时间数据,对该表设计为分区表后没有走分区剪枝(Selected Partitions数量多),Scan花了701785ms,I/O效率极低。 在增加分区键createtime作为过滤条件后,Partitioned scan走分区剪枝(Selected Partitions数量极少),性能从700s优化到10s,I/O效率极大提升。 常见场景:按照时间存储数据的大表,查询特征大多为访问当天或者某几天的数据,这种情况应该通过分区键进行分区剪枝(只扫描对应少量分区)来极大提升I/O效率,不走分区剪枝常见的情况有: 未设计成分区表。 设计了分区没使用分区键做过滤条件。 分区键做过滤条件时,对列值有函数转换。 触发因素:未合理使用分区表和分区剪枝功能,导致扫描效率低。 处理方式: 对按照时间特征存储和访问的大表设计成分区表。 分区键一般选离散度高、常用于查询过滤条件中的时间类型的字段。 分区间隔一般参考高频的查询所使用的间隔,需要注意的是针对列存表,分区间隔过小(例如按小时)可能会导致小文件过多的问题,一般建议最小间隔为按天。
-
场景6:行存表求count值 某行存大表频繁全表count(指不带过滤条件或者过滤条件过滤很少数据的count),其中Scan花费43s,持续占用大量I/O,此类作业并发起来后,整体系统I/O持续100%,触发I/O瓶颈,导致整体性能慢。 对比相同数据量的列存表(A-rows均为40960000),列存的Scan只花费14ms,I/O占用极低。 触发因素:行存表因其存储方式的原因,全表scan的效率较低,频繁的对大表全表扫描,导致I/O持续占用。 解决办法: 业务侧审视频繁全表count的必要性,降低全表count的频率和并发度。 如果业务类型符合列存表,则将行存表修改为列存表,提高I/O效率。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格