mysql数据迁移opengauss索引名探索

奋斗吧
奋斗吧
擅长邻域:未填写

标签: mysql数据迁移opengauss索引名探索 博客 51CTO博客

2023-03-28 18:23:29 136浏览

mysql数据迁移opengauss索引名探索,一、概述mysql中每张表几乎都使用独立表空间,所以索引名可以几张表同名而不受影响opengauss对于PRIMARYKEY索引会统一命名为"表名_pkey"opengauss对于索引同一个数据库索引名唯一,即使两张表创建在不同的表空间opengauss对于索引也会建成表的格式,可以用查询表结构的语句查询二、试验1、准备工作1、连接数据库gsql-dpostgres-p26000

一、概述

mysql中每张表几乎都使用独立表空间,所以索引名可以几张表同名而不受影响
opengauss对于PRIMARY KEY索引会统一命名为"表名_pkey"
opengauss对于索引同一个数据库索引名唯一,即使两张表创建在不同的表空间
opengauss对于索引也会建成表的格式,可以用查询表结构的语句查询

二、试验

1、准备工作

1、连接数据库
gsql -d postgres -p 26000 -r
2、创建用户
CREATE USER joe WITH PASSWORD 'Mysql@123456';
3、创建数据库
CREATE DATABASE database_test WITH OWNER joe ENCODING 'utf8' dbcompatibility='B';
4、创建表空间
CREATE TABLESPACE example1 RELATIVE LOCATION 'tablespace1/tablespace_1';
5、切换用户并创建joe模式
\c database_test
create schema AUTHORIZATION joe;

6、额外补充
此处对dbcompatibility做补充
DBCOMPATIBILITY [ = ] compatibility_type
指定兼容的数据库的类型,默认兼容O。
取值范围:A、B、C、PG。分别表示兼容Oracle、MySQL、Teradata和PostgreSQL
如果不指定B,要是建表语句有COMMENT注释就会报错:
"ERROR:  Comment is supported only in B compatible database."

2、直接使用还是退出重新登录

在准备工作中已经使用切换到database_test数据库
gsql -d postgres -p 26000 -r 
\c database_test
此时要不要退出重新使用joe登录
可以肯定此时登陆的用户肯定不是joe
1、创建试验用户
database_test=# CREATE TABLE TEST1 (
database_test(#   ID int4 NOT NULL COMMENT 'ID号'
database_test(# );
2、查看用户
\d
public | test1                         | table | omm   | {orientation=row,compression=no}
可以看到表创建到public下面了,根据search_path优先级第一的应该是$USER

3、解决办法
最简单的办法:
gsql -d database_test -p 26000 -r -U joe -W Mysql@123456 #重新使用joe登录
另一种办法:
gsql -d postgres -p 26000 -r
\c database_test joe 192.168.10.131 26000 #回车输入密码切换过去

3、创建表

1、创建第一张表
CREATE TABLE TEST (
  ID int4 NOT NULL COMMENT 'ID号',
  NAME varchar(10) NOT NULL COMMENT '姓名',
  UNIQUE INDEX INDEX_TEST_NAME (NAME) USING BTREE,
  PRIMARY KEY (ID) USING BTREE
)COMMENT='这是一个测试表';

2、查看表
database_test=> \d+ test
                                Table "public.test"
 Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
 id     | integer               | not null  | plain    |              | ID号
 name   | character varying(10) | not null  | extended |              | 姓名
Indexes:
    "test_pkey" PRIMARY KEY, btree (id) TABLESPACE pg_default
    "index_test_name" UNIQUE CONSTRAINT, btree (name) TABLESPACE pg_default
Has OIDs: no
Options: orientation=row, compression=no

3、查看表空间
database_test=> select spcname from pg_tablespace;
   spcname
-------------
 pg_default
 pg_global
 example1
 
4、创建第二张表
drop table test2;
CREATE TABLE TEST2 (
  ID int4 NOT NULL COMMENT 'ID号',
  NAME varchar(10) NOT NULL COMMENT '姓名',
  UNIQUE INDEX INDEX_TEST_NAME1 (NAME) USING BTREE,
  PRIMARY KEY (ID) USING BTREE
)COMMENT='这是一个测试表' TABLESPACE example1;
直接报错
"ERROR:  relation "index_test_name" already exists"
使用不同的表空间建表都会报错

5、有意思的是可以直接用查表的语句查索引名
database_test=> \d+ index_test_name
              Index "joe.index_test_name"
 Column |         Type          | Definition | Storage
--------+-----------------------+------------+----------
 name   | character varying(10) | name       | extended
unique, btree, for table "joe.test"

4、联想primary是不是也可以查询

1、查询表
database_test=> \d+ test
                                  Table "joe.test"
 Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
 id     | integer               | not null  | plain    |              | ID号
 name   | character varying(10) | not null  | extended |              | 姓名
Indexes:
    "test_pkey" PRIMARY KEY, btree (id) TABLESPACE pg_default
    "index_test_name" UNIQUE CONSTRAINT, btree (name) TABLESPACE pg_default
Has OIDs: no
Options: orientation=row, compression=no

2、查询主键索引
database_test=> \d+ test_pkey
          Index "joe.test_pkey"
 Column |  Type   | Definition | Storage
--------+---------+------------+---------
 id     | integer | id         | plain
primary key, btree, for table "joe.test"

3、查询其他索引
database_test=> \d+ index_test_name
              Index "joe.index_test_name"
 Column |         Type          | Definition | Storage
--------+-----------------------+------------+----------
 name   | character varying(10) | name       | extended
unique, btree, for table "joe.test"

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695