【我和openGauss的故事】浅尝 openGauss v5.0.0 的 MySQL 语法兼容性

opengauss-高斯数据库的安装部署及MySQL数据迁移实战. opengauss是华为基于PostgreSQL魔改的数据库。本文介绍轻量版的安装。 阅读详情

【我和openGauss的故事】浅尝 openGauss v5.0.0 的 MySQL 语法兼容性

严少安 2023-07-14 18:50 发表于openGauss公众号

在 openGauss 中,以下简称 og5 ,提供了一个名为 Dolphin 的插件,并以此来提供 MySQL 的兼容性。

本文将以 openGauss v5.0.0 版本为基础,对照 PostgreSQL v15.2 和 MariaDB 10.7.3 来演示 Dolphin 插件的基础功能。

openGauss提供dolphin Extension(版本为dolphin-1.0.0)。dolphin Extension是openGauss的MySQL兼容性数据库(dbcompatibility=‘B’)扩展,从关键字、数据类型、常量与宏、函数和操作符、表达式、类型转换、DDL/DML/DCL语法、存储过程/自定义函数、系统视图等方面兼容MySQL数据库。

环境准备

为验证本文中所使用的 SQL 语句,特意准备了一套实验环境,并为了做对照实验,还准备了 PostgreSQL 和 MariaDB 。
分别连接到 DB 后,屏幕信息展示如下。

图片

启用 Dolphin 插件

在 og5 中,新创建一个数据库,安装 Dophin 插件,并将参数开关打开:

-- 新建数据库 dophindb
CREATE DATBASE dolphindb DBCOMPATIBILITY 'B';

-- 安装 Dophin 插件
CREATE EXTENSION dolphin;

-- 打开 dolphin.b_compatibility_mode 开关
SET dolphin.b_compatibility_mode = on;

校验以下,可以看到插件已经安装,兼容模式已经开启:

(shawnyan@192) [dolphindb] 14:24:43> \dx
                                List of installed extensions
+-----------------+---------+------------+--------------------------------------------------+
|      Name       | Version |   Schema   |                   Description                    |
+-----------------+---------+------------+--------------------------------------------------+
...
| dolphin         | 1.0     | public     | sql engine                                       |
...
+-----------------+---------+------------+--------------------------------------------------+
(8 rows)

(shawnyan@192) [dolphindb] 14:30:23> show dolphin.b_compatibility_mode;
+------------------------------+
| dolphin.b_compatibility_mode |
+------------------------------+
| on                           |
+------------------------------+
(1 row)

这里也出现了第一个兼容说明,可以像在mysql中查看插件一样,在og中使用 show plugins 语法

(shawnyan@192) [dolphindb] 15:24:07> show plugins;
+-----------------+----------+------+---------+---------+--------------------------------------------------------------+
|      Name       |  Status  | Type | Library | License |                           Comment                            |
+-----------------+----------+------+---------+---------+--------------------------------------------------------------+
| dblink          | DISABLED |      | NULL    |         | connect to other PostgreSQL databases from within a database |
| dist_fdw        | ACTIVE   |      | NULL    |         | foreign-data wrapper for distfs access                       |
| dolphin         | ACTIVE   |      | NULL    |         | sql engine                                                   |
| file_fdw        | ACTIVE   |      | NULL    |         | foreign-data wrapper for flat file access                    |
| hstore          | ACTIVE   |      | NULL    |         | data type for storing sets of (key, value) pairs             |
| log_fdw         | ACTIVE   |      | NULL    |         | Foreign Data Wrapper for accessing logging data              |
| mot_fdw         | ACTIVE   |      | NULL    |         | foreign-data wrapper for MOT access                          |
| plpgsql         | ACTIVE   |      | NULL    |         | PL/pgSQL procedural language                                 |
| postgres_fdw    | DISABLED |      | NULL    |         | foreign-data wrapper for remote PostgreSQL servers           |
| security_plugin | ACTIVE   |      | NULL    |         | provides security functionality                              |
+-----------------+----------+------+---------+---------+--------------------------------------------------------------+
(10 rows)

兼容性测试

启用兼容模式后,意味着兼容 MySQL 语法,但并不代表完全兼容,可能是完全兼容、部分兼容,或者不兼容。
下面具体举例来看。

DDL

在 mysql 中,创建 schema 之后,可以使用 use 切换,而在 pg 中需要 set search_path.
在 og 中,同样可以使用 use,并且功能同 search_path 切换。

  • mariadb
MariaDB [(none)]> use sbtest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [sbtest]> show tables;
+------------------+
| Tables_in_sbtest |
+------------------+
| t1               |
+------------------+
1 row in set (0.001 sec)
  • pg
dophindb=# create table sbtest.t1(id int);
CREATE TABLE
dophindb=# set search_path=sbtest;
SET
dophindb=# \d
        List of relations
Schema | Name | Type  |  Owner
--------+------+-------+----------
sbtest | t1   | table | postgres
(1 row)
  • og
(shawnyan@192) [dolphindb] 14:51:57> use sbtest
dolphindb-> ;
SET
Time: 0.655 ms
(shawnyan@192) [dolphindb] 14:52:00> \d
                           List of relations
+--------+------+-------+----------+----------------------------------+
| Schema | Name | Type  |  Owner   |             Storage              |
+--------+------+-------+----------+----------------------------------+
| sbtest | t1   | table | shawnyan | {orientation=row,compression=no} |
+--------+------+-------+----------+----------------------------------+
(1 row)

(shawnyan@192) [dolphindb] 14:52:02> show search_path;
+-------------+
| search_path |
+-------------+
| sbtest      |
+-------------+
(1 row)

(shawnyan@192) [dolphindb] 15:18:34> show current_schema;
+----------------+
| current_schema |
+----------------+
| sbtest         |
+----------------+
(1 row)

再看下创建表:

og/pg 不支持 create or replcace,

MariaDB [sbtest]> create or replace table t1 (id int, c1 bit, c2 boolean);
Query OK, 0 rows affected (0.005 sec)

(shawnyan@192) [dolphindb] 15:18:54> create or replace table t1 (id int, c1 bit, c2 boolean);
ERROR:  syntax error at or near "table"
LINE 1: create or replace table t1 (id int, c1 bit, c2 boolean);
                          ^

但是都支持 create table if not exists,

MariaDB [sbtest]> create table if not exists t2 (id int, c1 bit, c2 boolean);
Query OK, 0 rows affected (0.008 sec)

dophindb=# create table if not exists t2 (id int, c1 bit, c2 boolean);
CREATE TABLE

(shawnyan@192) [dolphindb] 15:18:55> create table if not exists t2 (id int, c1 bit, c2 boolean);
CREATE TABLE

在 pg 中查询建表语句不是很方便,只能自己写方法或者借助第三方工具,在 MariaDB 中只需 show create table 即可,
来看下 og 的表现:

(shawnyan@192) [dolphindb] 15:26:04> show create table t2;
+-------+-----------------------------------------+
| Table |              Create Table               |
+-------+-----------------------------------------+
| t2    | SET search_path = sbtest;              +|
|       | CREATE TABLE t2 (                      +|
|       |     id integer,                        +|
|       |     c1 bit(1),                         +|
|       |     c2 boolean                         +|
|       | )                                      +|
|       | WITH (orientation=row, compression=no); |
+-------+-----------------------------------------+
(1 row)

更多 DDL 语法可参考文档:DDL语法一览表

进程信息

在 pg 中,可以通过系统表 pg_stat_activity 查看活跃的进程信息,效果如下:

dophindb=# select * from pg_stat_activity;
datid | datname  | pid | leader_pid | usesysid | usename  | application_name | client_addr | client_hostname | client_port |
    backend_start         |          xact_start           |          query_start          |         state_change          | wait_e
vent_type |     wait_event      | state  | backend_xid | backend_xmin | query_id |              query              |         backe
nd_type
-------+----------+-----+------------+----------+----------+------------------+-------------+-----------------+-------------+-----
--------------------------+-------------------------------+-------------------------------+-------------------------------+-------
----------+---------------------+--------+-------------+--------------+----------+---------------------------------+--------------
----------------
       |          |  11 |            |          |          |                  |             |                 |             | 2023
-07-07 04:50:01.059294+00 |                               |                               |                               | Activi
ty        | AutoVacuumMain      |        |             |              |          |                                 | autovacuum la
uncher
       |          |  12 |            |       10 | postgres |                  |             |                 |             | 2023
-07-07 04:50:01.059472+00 |                               |                               |                               | Activi
ty        | LogicalLauncherMain |        |             |              |          |                                 | logical repli
cation launcher
16390 | dophindb | 159 |            |       10 | postgres | psql             |             |                 |          -1 | 2023
-07-07 05:32:07.47404+00  | 2023-07-07 07:22:57.126396+00 | 2023-07-07 07:22:57.126396+00 | 2023-07-07 07:22:57.126399+00 |
          |                     | active |             |          741 |          | select * from pg_stat_activity; | client backen
d
       |          |   8 |            |          |          |                  |             |                 |             | 2023
-07-07 04:50:01.034653+00 |                               |                               |                               | Activi
ty        | BgWriterHibernate   |        |             |              |          |                                 | background wr
iter
       |          |   7 |            |          |          |                  |             |                 |             | 2023
-07-07 04:50:01.033115+00 |                               |                               |                               | Activi
dophindb=#

而在 mysql 中可以使用 show processlist, 如:

MariaDB [sbtest]> show processlist;
+----+------+-----------+--------+---------+------+----------+------------------+----------+
| Id | User | Host      | db     | Command | Time | State    | Info             | Progress |
+----+------+-----------+--------+---------+------+----------+------------------+----------+
|  4 | root | localhost | sbtest | Query   |    0 | starting | show processlist |    0.000 |
+----+------+-----------+--------+---------+------+----------+------------------+----------+
1 row in set (0.001 sec)

那么在 og 中,也兼容了该语法,只是会将内部线程和外部会话都显示出来:

(shawnyan@192) [dolphindb] 16:14:25> show processlist
dolphindb-> ;
+-----------------+-----------------+-----------------+-------------+----------+-----------------------+-----------+--------------
----------+-------------------------------+-------------------------------+-------+--------+--------------------------------------
--+
|       Id        |       Pid       |     QueryId     | UniqueSqlId |   User   |         Host          |    db     |        Comman
d         |         BackendStart          |           XactStart           | Time  | State  |                  Info
  |
+-----------------+-----------------+-----------------+-------------+----------+-----------------------+-----------+--------------
----------+-------------------------------+-------------------------------+-------+--------+--------------------------------------
--+
| 139817127892736 | 139817127892736 |               0 |           0 | omm      |                       | postgres  | TxnSnapCaptur
er        | 2023-07-07 02:01:47.418851+00 | [null]                        | 19113 | idle   |
  |
| 139817161455360 | 139817161455360 |               0 |           0 | omm      |                       | postgres  | ApplyLauncher
          | 2023-07-07 02:01:47.42906+00  | [null]                        | 19113 | idle   |
  |
| 139817111111424 | 139817111111424 |               0 |           0 | omm      |                       | postgres  | CfsShrinker
          | 2023-07-07 02:01:47.429884+00 | [null]                        | 19113 | idle   |
  |
| 139817094330112 | 139817094330112 |               0 |           0 | omm      |                       | postgres  | PercentileJob
          | 2023-07-07 02:01:47.438804+00 | [null]                        |     7 | active |
  |
| 139817077548800 | 139817077548800 |               0 |           0 | omm      |                       | postgres  | Asp
          | 2023-07-07 02:01:47.440282+00 | [null]                        |     1 | active |
  |
| 139817060767488 | 139817060767488 |               0 |           0 | omm      |                       | postgres  | statement flu
sh thread | 2023-07-07 02:01:47.501574+00 | [null]                        | 19113 | idle   |
  |
| 139817211799296 | 139817211799296 |               0 |           0 | omm      |                       | postgres  | JobScheduler
          | 2023-07-07 02:01:47.508451+00 | [null]                        |     0 | active |
  |
| 139816661403392 | 139816661403392 |               0 |           0 | omm      |                       | postgres  | WorkloadMonit
or        | 2023-07-07 02:01:47.527399+00 | [null]                        | 19113 | idle   |
  |
| 139816678184704 | 139816678184704 |               0 |           0 | omm      |                       | postgres  | workload
          | 2023-07-07 02:01:47.530114+00 | 2023-07-07 02:01:47.536091+00 | 19113 | active | WLM fetch collect info from data node
s |
| 139816644622080 | 139816644622080 |               0 |           0 | omm      |                       | postgres  | WLMArbiter
          | 2023-07-07 02:01:47.540853+00 | [null]                        | 19113 | idle   |
  |
| 139816484992768 | 139816484992768 |               0 |           0 | shawnyan | 192.168.195.1:56481   | postgres  | HeidiSQL
          | 2023-07-07 02:14:30.859179+00 | [null]                        |     5 | idle   |
  |
| 139816407267072 | 139816407267072 | 562949953425604 |   927755207 | shawnyan | 192.168.195.128:14942 | dolphindb | gsql
          | 2023-07-07 07:14:15.693419+00 | 2023-07-07 07:20:20.074231+00 |     0 | active | show processlist
+|
|                 |                 |                 |             |          |                       |           |
          |                               |                               |       |        | ;
  |
+-----------------+-----------------+-----------------+-------------+----------+-----------------------+-----------+--------------
----------+-------------------------------+-------------------------------+-------+--------+--------------------------------------
--+
(12 rows)

这当前这个演示示例中,我们看到了一个命令为 HeidiSQL 的进程,此时我们想杀掉这个会话,
那么在 pg 中需要使用 select pg_terminate_backend(pid);

而在兼容 mysql 的 og 里可以使用 kill <id> 命令来处理:

(shawnyan@192) [dolphindb] 16:31:27> kill 139816484992768;
+--------+
| result |
+--------+
| t      |
+--------+
(1 row)

再次查询进程信息,发现对应 id 的进程已经消失。

字符处理

dophin 对个别数据类型,及四则运算都有一定程度的改动,由于篇幅有限,详细内容请参考文档。
这里演示一下 format 函数的使用, pg 中不支持,

MariaDB [sbtest]> select format(1234.567,2);
+--------------------+
| format(1234.567,2) |
+--------------------+
| 1,234.57           |
+--------------------+
1 row in set (0.004 sec)

postgres=# select format(1234.567,2);
ERROR:  function format(numeric, integer) does not exist
LINE 1: select format(1234.567,2);
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

在 og 中的效果如下,与mairadb中的表现一致:

(shawnyan@192) [dolphindb] 16:53:19> select format(1234.567,2);
+----------+
|  format  |
+----------+
| 1,234.57 |
+----------+
(1 row)

但需要说明的是,og 中默认使用 en_US 格式,还可以指定其他格式,如:

(shawnyan@192) [dolphindb] 16:54:38> select format(1234.567,2,'de_DE');
+----------+
|  format  |
+----------+
| 1.234,57 |
+----------+
(1 row)

复制

德语的数字标点和英文中的有所区别。

总结

关于 Dophin 插件还有很多特性有待探索,比如最基础的数据类型比对,后期有时间可以专门出个长篇与大家分享。

| format |
±---------+
| 1,234.57 |
±---------+
(1 row)


但需要说明的是,og 中默认使用 en_US 格式,还可以指定其他格式,如:

(shawnyan@192) [dolphindb] 16:54:38> select format(1234.567,2,‘de_DE’);
±---------+
| format |
±---------+
| 1.234,57 |
±---------+
(1 row)

复制


德语的数字标点和英文中的有所区别。

## 总结

关于 Dophin 插件还有很多特性有待探索,比如最基础的数据类型比对,后期有时间可以专门出个长篇与大家分享。

openGauss 作为国产数据库的标杆产品,有着庞大的资源投入与关注度,希望 openGauss 可以持续发力,为国产数据库事业添砖加瓦。
数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践 基于开源三方件mysql-binlog-connector-java解析mysql的binlog, 并根据mysql主备进行复制的原理,对可并行的事务在openGauss端采用多线程进行并行回放,以实现MySQL到openGauss的在线迁移。通过支持表级并行迁移,提升MySQL全量迁移性能,基于sysbench测试模型,在Kunpeng-920 2p服务器上,10张表(单表容量三百万以上)使用10并发迁移,可达到大于300M/s的迁移性能。工具链:MySQL增量迁移支持十五级并行消费,提升增量迁移性能。 阅读详情

相关推荐

PostgreSQL崛起:国产数据库的基石与创新之路

如果你是一位数据库架构师,最近在选型时可能会发现一个有趣的现象:无论你是在评估金融级核心交易系统,还是在为下一个AI应用寻找向量存储方案,甚至是在规划一个需要处理地理空间数据的物联网平台,总有一个名字会反复出现在你的备选清单里:PostgreSQL,或者更亲切地,PG。 这不仅仅是巧合。根据 StackOverflow 2023 年的开发者调研,PostgreSQL 在数据库的“流行度”、“喜爱度”和“需求度”三项核心指标上,首次全面超越 MySQL,成为无可争议的“全能冠军”。更关键的是,它正以一种前所未

weixin_30753873的博客 326

Mysql迁移OpenGauss

公司要做信创的迁移,本文简单描述了一下Mysql迁移到OpenGauss的大概流程步骤

weixin_44739106的博客 7905

国产数据库:从PostgreSQL兼容到内核创新的技术演进与实践

数据库作为现代信息系统的核心组件,其架构演进始终围绕数据存储、事务处理与查询优化三大核心原理展开。随着云计算与分布式技术的发展,传统单机数据库在扩展性、高并发及混合负载上面临挑战,这催生了新一代数据库技术的创新。从技术价值看,向量化执行引擎通过批量处理数据,充分利用CPU的SIMD指令集,显著提升分析型查询性能;而原生分布式架构则通过重构事务管理与存储引擎,实现了数据的水平扩展与全局一致性。这些技术创新在金融、物联网、实时分析等对数据规模与处理时效性要求极高的应用场景中展现出关键价值。本文聚焦于国产数据库在

weixin_34290096的博客 397

openGauss 数据迁移指南:MySQL迁移—MySQL语法兼容性评估工具

openGauss兼容性评估工具,支持从多个场景下获取sql语句进行兼容性评估,并输出评估报告。支持从mysql端采集sql语句,支持从mysql端采集以下几种sql类型:对象定义语句(DDL)。慢sql语句。此类sql通过查询mysql.slow_log表获得,需要用户开启慢sql记录至该表中。全量sql语句。此类sql通过查询mysql.general_log表获得,同样需要用户开启general log记录至该表中。支持从文件中获取sql语句,支持以下几种文件类型:sql文件。

weixin_53596073的博客 2842

国产数据库全解析:openGauss、OceanBase、TiDB与KingbaseES的核心优势与应用场景指南

本文将深入剖析openGauss、OceanBase、TiDB和KingbaseES这四款主流国产数据库的核心内容,并针对国产化过程中给出使用建议,以帮助企业根据自身需求选择合适的数据库解决方案。国产数据库在性能、扩展性、兼容性、安全性等方面展现出强大实力,能够满足不同行业、不同场景的需求。企业在进行国产化过程中,应充分考虑业务特点、技术栈、团队能力等因素,结合上述分析,选择最适合自身的国产数据库产品。随着国产数据库技术的持续发展与生态完善,它们将成为推动企业数字化转型、保障数据安全的重要力量。

java专栏 8779

IEEE Transaction期刊模板使用注意事项

本文将总结使用IEEE Transactions系列期刊的投稿模板时的一些注意事项,包括模板本身的使用规范、参考文献的正确格式等其他内容。

weixin_39529207的博客 2万+

第六届openGauss技术文章征集活动 | 初审合格名单已更新(截至7月21日)

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 85

SimpleFOC STM32实战:基于F103与HAL库,剖析速度环与电流环的协同控制

本文详细介绍了基于STM32F103与HAL库的SimpleFOC实战应用,重点剖析速度闭环控制与电流环的协同工作原理。通过开发环境搭建、参数调试技巧及性能优化方案,帮助开发者高效实现无刷电机精准控制,适用于机器人、无人机等高精度应用场景。

weixin_29170327的博客 476

第六届openGauss技术文章征集活动全部初审合格名单公布

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 119

Spring Boot应用Docker化实战:从Dockerfile编写到镜像推送完整流程

本文详细介绍了将Spring Boot应用Docker化的完整实战流程。从环境准备、项目审视,到编写高效且安全的Dockerfile,重点讲解了多阶段构建、镜像层优化、Spring Boot分层JAR等核心技巧,并涵盖了镜像构建、验证、调试以及最终推送至仓库并集成CI/CD的最佳实践,帮助开发者构建生产级Docker镜像。

butter的博客 1023

Zephyr、FreeRTOS 和 RT-Thread

你是…更适合用嵌入式新手,刚接触 RTOSFreeRTOS(入门简单)IoT 项目开发,需要 BLE/WiFi/MQTTZephyr(协议全)想快速构建可部署的产品Zephyr(模块统一)只做单个任务或简单状态机控制FreeRTOS(轻量)做平台化、持续集成、自动测试Zephyr(CI 支持强)

is0815的博客 2246

第六届openGauss技术文章征集活动 | 首批初审合格名单公布!

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 ‍ ...

openGauss的博客 119

android HTTPS未校验服务器证书漏洞修复

上述代码是重写了域名校验的逻辑,每个证书里携带的域名是不可更改的,如果证书是合法的证书签发机构签发的,并且域名是和你要请求的域名对的上的,基本上就能确认你访问就服务器地址就是要访问的服务器地址,这样才是安全的。上述代码就是重新了证书校验的逻辑,信任所有的证书,正确的逻辑是要校验证书是否是可信任的证书签发机构所认证的,如果不校验的话你虽然是用了https加密传输,只要你的客户端用户信任了其他的证书哪怕是非法的证书,一样能够请求通过,而这个证书的服务器就可以解密你的报文,拿到你的隐私信息了。

kyzycyey的专栏 2623

倒计时2天 | 第六届openGauss技术文章征集活动最新初审合格名单(截至8.3)

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 87

基于freesurfer和3Dslicer的脑区分割与电极定位全流程解析(实战指南)

本文提供了一套基于FreeSurfer和3D Slicer的颅内电极定位实战指南。详细解析了从环境搭建、数据预处理、FreeSurfer脑区分割、影像配准,到3D Slicer中手动与自动化电极定位的全流程。重点介绍了如何利用FreeSurfer进行高精度脑区分割,并在3D Slicer中实现电极触点的可视化标记与坐标提取,最终获得带脑区信息的电极数据,为iEEG/SEEG研究奠定基础。

banana的博客 299

Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.

目录一、问题描述二、解决方案2.1 开启CPU虚拟化2.2 禁用Hyper-V2.3 使用管理员命令行在驱动程序包中执行“silent_install.bat” 一、问题描述 新买的AMD轻薄本,在安装Android Studio时遇到问题: Android Emulator Hypervisor Driver for AMD Processors installation failed. 笔记本配置为: 二、解决方案 2.1 开启CPU虚拟化 设置虚拟化的步骤这里不进行详细介绍了。如果需要,可以自行百

Wendy的博客 4万+

第六届openGauss技术文章征集活动全部初审合格文章合集

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 125

R语言灰色关联分析法

输入数据并用DT包的datatable函数展示数据 ABDDEF分别对应第1到第6个供应商产品质量、技术水平、供应能力、经济效益、交货情况、市场影响度指标属于效益型指 产品价格、地理位置、售后服务指标属于成本型指标。现分别对上述指标进行规范化: 对于效益型指标(正项指标)标准化公式为: x∗=x−min(x)max(x)−min(x) x^{\ast}=\frac{x-min\left( x \right)}{max\left( x \right) -min\left( x \right)} x∗=max

qq_54423921的博客 7996

倒计时8天 | 第六届openGauss技术文章征集活动最新初审合格名单(截至7.28)

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 102

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

系统国产化替代方案(三)Mysql数据迁移至OpenGauss

原因是我还没试过这个版本行不行,需要重新安装新版本OpenGauss。创建datakit数据库和迁移目标数据库testdb。访问https://ip:9494。吐槽一句:都是泪,踩了一遍又一遍的坑>~

qq_41057525的博客 4659

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【openGauss】浅试openGauss3.1.0中有关mysql兼容的部分特性

在9月30号,openGauss推出了3.1.0这一预览版。这个版本增加了不少新内容,但让我最感兴趣的是其中关于mysql兼容的部分

DarkAthena的博客 3631

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

openGauss MySQL兼容性增强

本特性主要从以下几方面增强openGauss与MySQL的兼容性(只列举部分典型语法,详情请参见《数据迁移指南》中“MySQL兼容性说明”章节):。支持用户锁,允许用户通过sql加自定义的锁,可以让多个程序之间完成加锁相关的交互过程,使得客户端从任何位置访问都可以得到一致性的锁视图。支持建表插入数据时默认记录插入当前时间;更新数据时,如果未指定更新时间,默认显示数据变更的当前时间。支持设置会话级SQL模式,允许运行时变更、全局变更以及会话内变更。支持隐藏索引,隐藏索引不会被优化器使用。

2301_79720856的博客 956

【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库

摘要:作者在将MySQL迁移到OpenGauss时遇到官方工具bug,选择自研解决方案。文章详细对比了两种数据库的表结构差异,包括数据类型转换(如VARCHAR改为NVARCHAR2)、索引处理等关键问题。作者开发了开源迁移工具,仅26MB大小,支持分页查询、线程池优化和转义处理,并提供详细的迁移报表。该项目已在Gitee开源(https://gitee.com/decentant/mysql-to-opengauss),解决了官方工具长期未修复的问题,实现了更轻量高效的数据库迁移方案。

DCTANT的博客 2151

OpenGauss MySQL兼容库迁移

我的方案是,对mysqldump出的脚本进行处理,首先要明确,mysqldump导出的不是一个二进制文件,而是一个SQL脚本,而且可以通过命令行参数控制mysqldump只导出表定义,或者只导出插入数据的INSERT语句,首先只导出表定义,然后提取和删除表定义中的索引、UNIQUE约束的外键约束,表定义中只有列定义和主键定义,这些OG的MySQL兼容模式足以应对,建表时几乎不会出错,如果出错再具体问题具体分析。尝试过直接导入OG 5.0.0的MySQL兼容模式,有不少错误,这些也是迁移工作的重点。

howard_shooter的博客 1181

openGauss的MySQL兼容性

DDLCREATE DATABASE支持IF NOT EXISTS选项。

1524
上一篇: 【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅
下一篇: openGauss DBMind上的多指标关联性分析介绍
飞奔的数据库
博客等级 码龄3年 16粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值