云服务器内容精选

  • 安装DSC工具 DSC是一款运行在Linux或Windows操作系统上的命令行工具,可免安装使用,下载软件包后,用户解压软件包即可使用。 Windows: 解压DSC.zip包。 得到DSC文件夹。 解压DSC.zip时,可根据需要选择任意文件夹进行解压。 进入DSC目录。 找到并查看DSC目录中的文件。 解压出来的文件夹和文件说明如表1所示。 Linux操作系统: 从DSC.zip包中提取文件。 sh install.sh 进入DSC目录。 cd DSC 查看DSC目录中的文件。 ls config lib scripts bin input output runDSC.sh runDSC.bat 表1 DSC目录 文件或文件夹 说明 DSC bin dsc相关jar(可执行的)。 config DSC工具的配置文件。 input 输入文件夹 lib 该文件夹中包括DSC正常运行所必须的库文件。 output 输出文件夹 scripts 该文件夹中包括Oracle和Teradata迁移的自定义配置脚本,用户可以直接执行sql文件启用所需功能。 runDSC.sh 在Linux操作系统中运行应用程序。 runDSC.bat 在Windows操作系统中运行应用程序。 changelog 通知当前修改。 Install.sh 设置DSC的文件权限。 readme.txt 在安装和配置前,阅读安装和配置操作说明。 如果不再需要DSC,可以通过删除DSC文件夹本身来卸载它。
  • 编辑连接 在“对象浏览器”窗格中,右键单击连接名称,然后选择“编辑连接”。弹出“编辑连接”对话框。 若要编辑活跃连接,需要先关闭该连接,然后重新打开设置了新属性的连接。工具会显示连接重置警告。 编辑连接参数。有关参数详情,请参见表1。 数据库类型和名称字段不支持修改。 单击“确定”保存更新后的连接信息。 可单击“清除”清除“编辑连接”对话框中的所有字段。 如果未修改任何连接参数就单击“确定”,会显示对话框,提示用户未保存更改。在修改连接参数后,会显示对话框消息。 如果未启用SSL,工具会显示“连接安全告警”对话框。单击“继续”以继续使用不安全的连接,或单击“取消”返回到“编辑连接”对话框并启用SSL。 如果勾选“不再显示”字段,当前登录的Data Studio实例在后续连接时,不再显示“连接安全告警”对话框。 工具会显示“确认删除连接”对话框,询问用户是否确认删除已编辑连接的数据库。 单击“是”继续更新连接信息,并重新连接到已更新参数的连接。 状态栏显示已完成操作的状态。
  • 刷新连接数据 在“对象浏览器”窗格中,右键单击连接名称并选择“刷新”,或按“F5”刷新数据库,刷新整个连接。在刷新的过程中,整个连接将更新为服务器上的最新内容。 状态栏显示已完成操作的状态。 完成刷新数据库所需时间完全取决于数据库中存在的对象数量。因此,建议在大规模数据库中尽量在空闲时间段执行此操作。 如果刷新整个数据库或连接,search_path中模式下的所有子对象和用户已展开的模式会重新加载。 如果重新连接数据库,仅会加载search_path中保存的模式对象。先前展开的对象不会加载。 不能同时刷新数据库及其下的多个对象。
  • 日志概述 日志文件是DSC所有操作和状态的存储库。支持以下日志文件: SQL迁移日志 DSC.log:SQL迁移的所有活动。 DSCError.log:SQL迁移错误。 successRead.log:SQL迁移中对输入文件的成功读次数。 successWrite.log:SQL迁移中对输入文件的成功写次数。 Perl迁移日志 perlDSC.log:Perl迁移中所有的活动、预警和错误。 Apache Log4j用于指定DSC记录日志的框架。用户可使用以下Log4j配置文件,也可以根据需要进行自定义: Teradata/Oracle/Netezza/DB2 : config/log4j2.xml MySQL : config/log4j2_mysql.xml 父主题: 日志参考
  • 下载并安装Data Studio客户端 GaussDB (DWS) 提供了基于Windows平台的Data Studio图形界面客户端,该工具依赖JDK,请先在客户端主机上安装JDK。 仅支持Java 1.8版本的JDK。 在Windows操作系统中,您可以访问JDK官网网站,下载符合操作系统版本的JDK,并根据指导进行安装。 登录GaussDB(DWS)管理控制台。在左侧导航栏中,单击“连接客户端”,进入“下载客户端和驱动”页面。 在“下载客户端和驱动”页面,下载“Data Studio图形界面客户端”。 请根据操作系统类型,选择“Windows x86”或“Windows x64”,再单击“下载”,可以下载与现有集群版本匹配的Data Studio工具。 单击“历史版本”可根据集群版本下载相应版本的Data Studio工具,建议按集群版本下载配套的工具。 图1 下载客户端 如果同时拥有不同版本的集群,选择与集群版本相对应的gsql版本客户端。在“集群管理”页面的集群列表中,单击指定集群的名称,再选择“集群详情”页签,可查看集群版本。 解压下载的客户端软件包(32位或64位)到需要安装的路径。 打开安装目录,双击Data Studio.exe,启动Data Studio客户端。 图2 启动客户端 表1 Data Studio安装包结构 文件夹/文件 说明 configuration 包含应用启动信息和所需Eclipse插件路径信息。 db_assistant 包含“SQL助手”功能相关的文件。 docs 包含《Data Studio用户手册.pdf》,本手册详细介绍了如何使用Data Studio工具。 包含在Data Studio中使用的开源软件的版权声明、许可证和书面邀约。 features 包含Eclipse(如富客户端协议GUI)和Data Studio特性。 p2 p2包含的文件用于提供和管理基于Eclipse和Equinox的应用。 plugins 包含必须的Eclipse和Data Studio插件。 tools 包含Data Studio的依赖工具。 UserData/ Autosave Logs/ Preferences/ Profile/ History/ Security/ 包含每个使用Data Studio的OS用户各自的文件夹。 Autosave:包含自动保存的查询和函数/过程信息。 Logs:包含Data Studio.log文件,该文件保存Data Studio所有操作的日志信息。 Preferences:包含Preferences.prefs文件,内容为自定义的首选项。 Profile:包含connection.properties文件、SQL执行历史、Profiles.txt文件,用于管理Data Studio中的连接信息。 Security:包含Data Studio安全管理所需文件。 说明: User Data文件夹在首个用户用Data Studio打开实例后创建。 日志文件夹、语言、内存设置、日志级别对所有用户生效。 Data Studio启动后,会创建日志文件夹、Data Studio.log文件、Preferences文件夹、Preferences.prefs文件、Profile文件夹、connection.properties文件、Profiles.txt文件和security文件夹。 如果Data Studio.ini文件中指定了日志文件夹路径,日志会在指定路径创建。 如果您因安全密钥被损坏,无法登录Data Studio,请按如下步骤生成新的安全密钥: 从Data Studio文件夹下的UserData文件夹中删除security文件夹。 重启Data Studio。 artifacts.xml 包含产品编译版本信息。 changelog.txt 包含当前版本的详细变更信息。 Data Studio.exe/DataStudio.sh 支持连接服务器并执行各种操作,如管理数据库对象、编辑或执行PL/SQL程序。 Data Studio.ini 包含Data Studio工具运行时的配置信息。 readme.txt 包含当前版本的功能和修复的问题。 若您的电脑阻止应用运行,可对Data Studio.exe文件属性勾选解除锁定即可启动。 安装完成后双击安装目录/tools的中StartDataStudio.bat文件检查操作系统、 Java和Data Studio的版本。 批量文件检查版本兼容性并打开Data Studio,或根据安装的操作系统、Java和Data Studio版本,显示相应的信息。 如果安装的Java版本低于1.8,可能会弹出错误消息。 批量文件检查如下场景,用于确认Data Studio的操作系统和Java版本: DS安装(32/64位) 操作系统(位) Java(位) 结果 32 32 32 打开Data Studio 32 64 32 打开Data Studio 32 64 64 弹出错误消息 64 32 32 弹出错误消息 64 64 32 弹出错误消息 64 64 64 打开Data Studio 父主题: Data Studio
  • MERGE MERGE是一种ANSI标准的SQL语法运算符,用于从一个或多个源中选择行来更新或插入表或视图。用户可指定更新或插入目标表或视图的条件。 DSC使用多种方法将MERGE迁移到GaussDB(DWS)兼容的SQL中。 配置参数mergeImplementation: 默认设置为WITH。设为此值时,目标查询将转换成公用表表达式。 图11 输入:MERGE(1) 图12 输出:MERGE(2) 也可设置为SPLIT。设为此值时,MERGE语句将被分解为多个INSERT和UPDATE语句。 图13 输入:MERGE(3) 图14 输出:MERGE(4)
  • MySQL配置 设置MySQL配置参数可在迁移MySQL数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-mysql.properties文件,并根据实际需要设置features-mysql.properties文件中的配置参数中的参数。 表1 features-mysql.properties文件中的配置参数 参数 说明 取值范围 默认值 样例 table.databaseAsSchema table.defaultSchema 是否使用数据库名称作为schema名称,如果数据库名称不存在,则使用用户定义schema, 如果用户定义schema为空,则使用默认schema。 true false public true public table.databaseAsSchema=true table.defaultSchema=public table.schema 用户设置的schema名称,如果该参数不为空,则使用该参数,即使包含useDatabaseAsSchema = true,也会使用当前schema名称。 schemaName 默认为空 table.schema= table.orientation 默认数据存储方式,ROW:行存储,COLUMN:列存储。 ROW COLUMN ROW table.orientation=ROW table.type 默认的表类型,分区表、复制表、round-robin表。 REPLICATION、HASH、ROUND-ROBIN。 HASH REPLICATION ROUND-ROBIN HASH table.type=HASH table.tablespace 表空间选项。 COMMENT RESERVE RESERVE table.tablespace=RESERVE table.partition-key.choose.strategy 分区键选择策略。 partitionKeyChooserStrategy partitionKeyChooserStrategy table.partition-key.choose.strategy=partitionKeyChooserStrategy table.partition-key.name 分区键设置,如果为空,则按照默认策略选择,如果有多列,用逗号分隔,忽略列名称大小写。 预留参数 默认为空 table.partition-key.name= table.compress.mode 创建新表时,需要在CREATE TABLE语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。 COMPRESS NOCOMPRESS NOCOMPRESS table.compress.mode=NOCOMPRESS table.compress.row table.compress.column 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。 YES NO YES NO LOW MIDDLE HIGH NO LOW table.compress.row=NO table.compress.column=LOW table.compress.level 指定表数据同一压缩级别下的不同压缩水平,它决定了同一压缩级别下表数据的压缩比以及压缩时间。对同一压缩级别进行了更加详细的划分,为用户选择压缩比和压缩时间提供了更多的空间。总体来讲,此值越大,表示同一压缩级别下压缩比越大,压缩时间越长;反之亦然。 0 1 2 3 0 table.compress.level=0 table.database.template 数据库模板。 预留参数 template0 table.database.template=template0 table.database.encoding A database code. UTF8 SQL_ASCII GBK Latin1 codes UTF8 table.database.encoding=UTF8 table.index.rename 创建索引时,是否重新命名索引名。 true false false table.index.rename=false table.database.onlyFullGroupBy select后非聚合列是否全部出现在group by中。 true false true table.database.onlyFullGroupBy=true table.database.realAsFloat REAL数据类型转换使用,默认false,转换为DOUBLE PRECISION;改为true时,转换为REAL。 true false false table.database.realAsFloat=false 父主题: 配置DSC
  • 客户端和服务器端SSL连接参数组合情况 客户端最终是否使用SSL加密连接方式、是否验证服务器证书,取决于客户端参数sslmode与服务器端(即GaussDB(DWS)集群侧)参数ssl、require_ssl。参数说明如下: ssl(服务器) ssl参数表示是否开启SSL功能。on表示开启,off表示关闭。 对于集群版本高于1.3.1(包括1.3.1)的集群,默认为on,不支持在GaussDB(DWS)管理控制台上设置。 对于集群版本低于1.3.1的集群,默认为on。ssl参数可通过GaussDB(DWS)管理控制台上集群的“安全设置”页面中的“SSL连接”进行设置。 require_ssl(服务器) require_ssl参数是设置服务器端是否强制要求SSL连接,该参数只有当ssl为on时才有效。on表示服务器端强制要求SSL连接。off表示服务器端对是否通过SSL连接不作强制要求。 对于集群版本高于1.3.1(包括1.3.1)的集群,默认为off。require_ssl参数可通过GaussDB(DWS)管理控制台上集群的“安全设置”页面中的“服务器端是否强制使用SSL连接”进行设置。 对于集群版本低于1.3.1的集群,默认为off,不支持在GaussDB(DWS)管理控制台上设置。 sslmode(客户端) 可在SQL客户端工具中进行设置。 在gsql命令行客户端中,为“PGSSLMODE”参数。 在Data Studio客户端中,为“SSL模式”参数。 客户端参数sslmode与服务器端参数ssl、require_ssl配置组合结果如下: 表3 客户端与服务器端SSL参数组合结果 ssl(服务器) sslmode(客户端) require_ssl(服务器) 结果 on disable on 由于服务器端要求使用SSL,但客户端针对该连接禁用了SSL,因此无法建立连接。 disable off 连接未加密。 allow on 连接经过加密。 allow off 连接未加密。 prefer on 连接经过加密。 prefer off 连接经过加密。 require on 连接经过加密。 require off 连接经过加密。 verify-ca on 连接经过加密,且验证了服务器证书。 verify-ca off 连接经过加密,且验证了服务器证书。 off disable on 连接未加密。 disable off 连接未加密。 allow on 连接未加密。 allow off 连接未加密。 prefer on 连接未加密。 prefer off 连接未加密。 require on 由于客户端要求使用SSL,但服务器端禁用了SSL,因此无法建立连接。 require off 由于客户端要求使用SSL,但服务器端禁用了SSL,因此无法建立连接。 verify-ca on 由于客户端要求使用SSL,但服务器端禁用了SSL,因此无法建立连接。 verify-ca off 由于客户端要求使用SSL,但服务器端禁用了SSL,因此无法建立连接。
  • SSL认证方式及客户端参数介绍 SSL认证有两种认证方式,如表1所示。从安全性考虑,建议使用双向认证方式。 表1 认证方式 认证方式 含义 配置客户端环境变量 维护建议 双向认证(推荐) 客户端验证服务器证书的有效性,同时服务器端也要验证客户端证书的有效性,只有认证成功,连接才能建立。 设置如下环境变量: PGSSLCERT PGSSLKEY PGSSLROOTCERT PGSSLMODE 该方式应用于安全性要求较高的场景。使用此方式时,建议设置客户端的PGSSLMODE变量为verify-ca。确保了网络数据的安全性。 单向认证 客户端只验证服务器证书的有效性,而服务器端不验证客户端证书的有效性。服务器加载证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。 设置如下环境变量: PGSSLROOTCERT PGSSLMODE 为防止基于TCP链接的安全攻击,建议使用SSL证书认证功能。除配置客户端根证书外,建议客户端使用PGSSLMODE变量为verify-ca方式连接。 在客户端配置SSL认证相关的环境变量,详细信息请参见表2。 客户端环境变量的路径以“/home/dbadmin/dws_ssl/”为例,在实际操作中请使用实际路径进行替换。 表2 客户端参数 环境变量 描述 取值说明 PGSSLCERT 指定客户端证书文件,包含客户端的公钥。客户端证书用以表明客户端身份的合法性,公钥将发送给对端用来对数据进行加密。 必须包含文件的绝对路径,如: export PGSSLCERT='/home/dbadmin/dws_ssl/sslcert/client.crt' 默认值:空 PGSSLKEY 指定客户端私钥文件,用以数字签名和对公钥加密的数据进行解密。 必须包含文件的绝对路径,如: export PGSSLKEY='/home/dbadmin/dws_ssl/sslcert/client.key' 默认值:空 PGSSLMODE 设置是否和服务器进行SSL连接协商,以及指定SSL连接的优先级。 取值及含义: disable:只尝试非SSL连接。 allow:首先尝试非SSL连接,如果连接失败,再尝试SSL连接。 prefer:首先尝试SSL连接,如果连接失败,将尝试非SSL连接。 require:只尝试SSL连接。如果存在CA文件,则按设置成verify-ca的方式验证。 verify-ca:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。 verify-full:GaussDB(DWS)不支持此模式。 默认值:prefer 说明: 若集群外访问客户端时,部分节点出现报错:ssl SYSCALL error。则可执行export PGSSLMODE="allow"或export PGSSLMODE="prefer"。 PGSSLROOTCERT 指定为客户端颁发证书的根证书文件,根证书用于验证服务器证书的有效性。 必须包含文件的绝对路径,如: export PGSSLROOTCERT='/home/dbadmin/dws_ssl/sslcert/certca.pem' 默认值:空 PGSSLCRL 指定证书吊销列表文件,用于验证服务器证书是否在废弃证书列表中,如果在,则服务器证书将会被视为无效证书。 必须包含文件的绝对路径,如: export PGSSLCRL='/home/dbadmin/dws_ssl/sslcert/sslcrl-file.crl' 默认值:空
  • 在gsql客户端配置SSL认证相关的数字证书参数 GaussDB(DWS)在集群部署完成后,默认已开启SSL认证模式。服务器端证书,私钥以及根证书已经默认配置完成。用户需要配置客户端的相关参数。 登录GaussDB(DWS)管理控制台,在左侧导航栏中,进入“连接客户端”页面。 在“下载驱动程序”区域,单击“下载SSL证书”进行下载。 图1 SSL证书下载 使用文件传输工具(例如WinSCP工具)将SSL证书上传到客户端主机。 例如,将下载的证书“dws_ssl_cert.zip”存放到“/home/dbadmin/dws_ssl/”目录下。 使用SSH远程连接工具(例如PuTTY)登录gsql客户端主机,然后执行以下命令进入SSL证书的存放目录,并解压SSL证书: cd /home/dbadmin/dws_ssl/ unzip dws_ssl_cert.zip 在gsql客户端主机上,执行export命令,配置SSL认证相关的数字证书参数。 SSL认证有两种认证方式:双向认证和单向认证。认证方式不同用户所需配置的客户端环境变量也不同,详细介绍请参见SSL认证方式及客户端参数介绍。 双向认证需配置如下参数: export PGSSLCERT="/home/dbadmin/dws_ssl/sslcert/client.crt" export PGSSLKEY="/home/dbadmin/dws_ssl/sslcert/client.key" export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem" 单向认证需要配置如下参数: export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem" 从安全性考虑,建议使用双向认证方式。 配置客户端环境变量,必须包含文件的绝对路径。 修改客户端密钥的权限。 客户端根证书、密钥、证书以及密钥密码加密文件需保证权限为600。如果权限不满足要求,则客户端无法以SSL方式连接到集群。 chmod 600 client.key chmod 600 client.crt chmod 600 client.key.cipher chmod 600 client.key.rand chmod 600 cacert.pem
  • IF NOT EXISTS DSC支持转换 IF NOT EXISTS关键字,迁移过程保留。 输入示例 1 2 3 4 5 6 7 8 9 10 DROP TABLE IF EXISTS `categories`; CREATE TABLE IF NOT EXISTS `categories` ( `CategoryID` tinyint(5) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `CategoryName` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' , `Description` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , `Picture` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', UNIQUE (`CategoryID`) )ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS `categories`; 输出示例 1 2 3 4 5 6 7 8 DROP TABLE IF EXISTS "public"."categories"; CREATE TABLE IF NOT EXISTS "public"."categories" ( "categoryid" SMALLSERIAL NOT NULL PRIMARY KEY, "categoryname" VARCHAR(60) NOT NULL DEFAULT '', "description" TEXT NOT NULL, "picture" VARCHAR(200) NOT NULL DEFAULT '' ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("categoryid"); DROP TABLE IF EXISTS "public"."categories"; 父主题: 表(可选参数、操作)
  • 连接集群的方式 如果您已经创建了GaussDB(DWS)集群,就可以使用SQL客户端工具或者JDBC(Java database connectivity)/ODBC(Open Database Connectivity)等第三方驱动程序连接集群,访问集群中的数据库。 连接集群的步骤如下: 获取集群连接地址 如果使用SSL加密连接方式,需要执行:使用SSL进行安全的TCP/IP连接 连接集群访问集群数据库。您可以选择以下任意一种方式连接集群。 建议使用官方推荐的以下方式连接数据库。 其它客户端不能保证100%兼容性,需要客户自行验证。 使用其它客户端如果出现不兼容而报错,且不能替换客户端的情况,可尝试替换客户端中的libpq驱动。替换方法:参见下载客户端下载并解压gsql客户端压缩包,获取gsql目录下的libpg.so,替换到客户端指定目录中。 使用SQL编辑器连接集群 使用SQL客户端工具连接集群。 使用Linux gsql客户端连接集群 使用Windows gsql客户端连接集群 使用Data Studio图形界面客户端连接集群 使用JDBC、ODBC、psycopg2、PyGreSQL第三方驱动程序连接集群。 使用JDBC连接 使用ODBC连接 使用Python第三方库psycopg2连接集群 使用Python第三方库PyGreSQL连接集群 配置JDBC连接(使用 IAM 认证方式) 父主题: 连接集群
  • GaussDB(DWS)是否支持第三方客户端以及JDBC和ODBC驱动程序? 推荐使用GaussDB(DWS)客户端和驱动程序。与开源的PostgreSQL客户端和驱动程序相比,有两个主要的优点: 安全强化:PostgreSQL驱动程序只支持MD5认证,但GaussDB(DWS)驱动程序支持SHA256和MD5。 数据类型增强:GaussDB(DWS)驱动程序支持新的数据类型smalldatetime和tinyint。 GaussDB(DWS)支持开源PostgreSQL客户端和JDBC和ODBC驱动程序。 兼容的客户端和驱动程序版本如下: PostgreSQL的psql 9.2.4或更高版本 PostgreSQL JDBC驱动程序9.3-1103或更高版本 PSQL ODBC 09.01.0200或更高版本 使用JDBC/ODBC连接GaussDB(DWS),可参见开发指南的教程:使用JDBC或ODBC开发。 建议使用官方推荐的方式连接数据库。参见连接集群方式。 其它客户端不能保证100%兼容性,需要客户自行验证。 使用其它客户端如果出现不兼容而报错,且不能替换客户端的情况,可尝试替换客户端中的libpq驱动。替换方法:参见工具下载下载并解压gsql客户端压缩包,获取gsql目录下的libpg.so,替换到客户端指定目录中。 父主题: 数据库连接
  • 如何使用 使用华为云账户登录GaussDB(DWS)管理控制台。 在页面右上角单击“小D助手”进入智能问答页面。 参见表1进行询问。 表1 问题样例 场景 问题样例 产品咨询、购买 DWS怎么购买 DWS的功能有什么 查大功能、大场景、规格、大特性的介绍 DWS支持哪些导入方式 怎么导入数据 在线扩容 并发连接数多大 支持的分区表的大小 某个特性是否支持,某个SQL语法的具体使用 DWS支持roundrobin吗 list分区是否支持 是否支持磁盘扩容 create table 如何给某个schema下的对象授权 主键如何使用 查询表占用的总大小 建表字段是date,为啥建完是timestamp 开发过程遇到问题、错误码查询 创建外表失败,提示OBS访问被拒绝 账号锁住了,如何解锁 赋予用户schema的all权限后建表仍然报错:ERROR: current user does not have privilege to role tom GAUSS-00051 memory is temporarily unavailable 解决方案 资源负载管理最佳实践 GDS实践指南 SQL查询最佳实践
  • 8.1.3.320 表5 8.1.3.320新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 truncate、exchange与select并发: 新增GUC参数ddl_select_concurrent_mode,该特性主要解决数据量较大或复杂查询的场景中,查询语句持续时间过长,阻塞DDL的场景,与Oracle效果一致。 支持场景: 支持truncate和select并发; 支持exchange和select并发。 场景约束: 与高级别的锁冲突(大于1级),不支持并发(比如autoanalyze_mode=normal时,同时select触发了autoanalyze); 与事务块中的锁冲突,不支持并发。 DWS常用连接方式约束: jdbc、odbc、python驱动时,如果程序设置了autocommit = false,不支持该特性; Data Studio下发的所有查询语句,自动起事务,不支持该特性。 - - - 支持控制LIMIT语句是否启用early stop优化: 新增GUC参数enable_limit_stop,控制LIMIT语句是否启用early stop优化。 - - - 解决问题 语句级估算内存超过max_process_memory限制,导致ccn排队。 语句级估算内存超过max_process_memory限制。 8.1.3.310及以下版本 升级到8.1.3.320及以上版本。具体升级策略请参见版本收编策略。 执行merge报错:value xxx is out of range for type integer。 pg_toast_get_baseid()函数中使用int接口处理OID。 8.1.3.310及以下版本 查询20万行数据大表的脏页率视图,内存占用大。 查询数据的时候,查询统计信息的内置函数中创建的链表内每个结点上申请了内存空间用于存放tupStatus,查询结束后,仅释放了链表上结点的内存,结点内申请的内存未释放。 8.1.1.x版本 Vacuum执行超时被查杀后,部分DN出现线程残留,无法响应信号,阻塞其他语句执行。 由于btvacuumscan中未响应信号,导致Vacuum执行超时被查杀后,部分dn出现线程残留,无法响应信号。 8.1.1.x版本 对MySQL兼容库中的分区表、时序表执行analyze百分比采样操作时报错:unsupported feature with temporary/unlogged table for partitioned table。 由于8.1.3版本中为了兼容MySQL中CREATE TABLE LIKE语法,默认继承模式为INCLUDING ALL,且执行analyze百分比采样时,含有自动创建临时复制表命令,导致analyze时出现报错。 8.1.3.310及以下版本 冷热表的select查询语句触发runtime autoanalyze,性能慢。 执行truncate partition,exchange partition,drop partition,alter distribute,alter column type这五种操作后,再执行select该表会触发autoanalyze。 8.1.3.310及以下版本 pg_session_wlmstat中elapsed_time与TOP SQL实际执行的时间不一致。 查询pg_session_wlmstat视图,语句处于RUNNING状态时elapsed_time过大。 8.0.x 给外表执行grant select权限时报错:has no distribute type。 obs dfs server只写外表没有指定默认的分布方式导致报错。 8.1.3.310及以下版本