首页 > 其他分享 >人大金仓学习之三-表空间与跨磁盘存储和分区表

人大金仓学习之三-表空间与跨磁盘存储和分区表

时间:2023-07-20 23:44:17浏览次数:40  
标签:金仓 tablehash create 数据库 zz0001 分区表 tablespace 之三

人大金仓学习之三-表空间与跨磁盘存储和分区表


背景

最近在用人大金仓的数据库.
前期学习了 kwr和ksh等工具.
今天想验证一下性能相关的情况.
因为机器正好有多个磁盘的分区. 想着能够将所有的硬盘都用上.
提高性能, 感觉总体还不错, 所以想总结一下.

注意这里只考虑 OLTP 比较古老的数据库, 暂时不分析新时达的分布式数据库.
分布式数据库通过水平无线扩展可以更好的解决这个问题. 

计划明天周五如果下班比较早回继续总结一下kmonitor. 

关于数据目录

人大金仓默认安装时会将数据文件放到 /opt/Kingbase 某个子目录的 data下面去.
一般情况下, 数据库的安装文件和数据文件要拆开存放, 这样可以保证安全和稳定. 

进行数据迁移的方法要非常简单. 
将 data 目录放到特定的目录. 将目录给与kingbase用户的属主
然后修改 data_directory的路径到指定路径就可以了. 

启动脚本也很简单
/kingbase/ES/V8/Server/bin/sys_ctl -D /nvme01/kingbase/data restart

就可以执行重启操作.

关于跨磁盘存储

一般分区的磁盘空间时有限的.
不可能无限制的扩容, 
尤其是在nvme 存储都时直连 CPU的PCI-E的时代
制作成 raid 反而浪费了存储的性能. 
此时比较好的方式是分盘挂载,然后通过不同目录放不同数据库, 或者是数据表
实现存储性能的最大化. 

说到跨磁盘的存储.
Oracle实现的方式 时可以通过创建表空间对应的数据文件的方式进行.
可以给一个表空间同时添加多个不同硬件挂载目录的datafile的方式实现IO的分布.
Oracle会比较智能的实现数据文件的平均写入. 

但是人大金仓这一块与Oracle不太一样.
他其实包含了多个概念. 数据库实例 下面有 数据库, 数据库下面有表空间和架构. 

表空间的创建更多的是对应一下物理路径,架构更多的是一个管理的概念.
一个数据库可以有多个表空间.  理论上一个表空间也可以属于多个数据库(不建议)
一个目录应该只能属于一个表空间.  

所以跨磁盘存储就可以创建多个 表空间, 然后建表时 通过tablespace 的方式进行分布. 

不同磁盘存放不同表的最佳实践

create tablespace zz0001 owner zz0001 location '/kingbasedata/zz';
create tablespace zz0001_01 owner zz0001 location '/kingbasedata/zz01';
create tablespace zz0001_02 owner zz0001 location '/kingbasedata/zz02';

然后建表时
create table table1 (name varchar(32)) tablespace zz0001 ;
create table table2 (name varchar(32)) tablespace zz0001_01 ;
create table table3 (name varchar(32)) tablespace zz0001_02 ;

这种方式就可以实现将三个表存到三个不同的目录
这样可以最佳化磁盘存储性能, 也避免所有表在一起互相影响. 

关于分区表

分表存储场景可能比较有限, 并且也可能存在一些风险. 比如一个表大到一个分区放不下.
当然这样的场景一般时需要年度/水平分表来实现.
但是这种会哟一些业务侵入性 

还有一个方式是数据库分区表
人大金仓与PG数据库一样, 其实支持三种分区表 list 分区. range 分区 以及 hash分区

因为最近比较忙乱, 所以想着仅学习和使用 hash分区
因为hash分区的结果最为平均.  但是实际上还是需要使用 list 或者是rage 这样更加有利于查询场景的性能调优 

需要注意 hash分区表里面 MODULUS 表示取余的模数, REMAINDER 表示剩余数. 拆三个表 就是 按照3 取余最好
五个表就是按照五取余数.  这个比较简单. 


drop table if exists tablehash ;
CREATE TABLE tablehash ( id varchar(36),name varchar(200)) PARTITION BY HASH(id)  ;
create index index_tablehash_master on tablehash  USING btree (id) ;

create table tablehash_p1 PARTITION OF tablehash FOR VALUES with (MODULUS 3, REMAINDER 0) tablespace zz0001_01;
create index index_tablehash_master_p1 on tablehash_p1  USING btree (id) ;

create table tablehash_p2 PARTITION OF tablehash FOR VALUES with (MODULUS 3, REMAINDER 1) tablespace zz0001_02;
create index index_tablehash_master_p1 on tablehash_p2  USING btree (id) ;

create table tablehash_p3 PARTITION OF tablehash FOR VALUES with (MODULUS 3, REMAINDER 2) tablespace zz0001_03;
create index index_tablehash_master_p1 on tablehash_p3  USING btree (id) ;

标签:金仓,tablehash,create,数据库,zz0001,分区表,tablespace,之三
From: https://www.cnblogs.com/jinanxiaolaohu/p/17570016.html

相关文章

  • 数据库逻辑设计之三大范式
    一、第一范式1NF是对属性的原子性,要求属性具有原子性,不可再分解;表:字段1、字段2(字段2.1、字段2.2)、字段3......如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是;二、第二范式2NF是对记录的唯一性,要求记录有唯一标......
  • 金仓数据库python操作
    金仓数据库Python操作金仓数据库(Kingbase)是一种高性能的关系型数据库管理系统,其功能强大并且支持SQL语言,是企业级应用中常用的数据库之一。本文将介绍如何在Python中使用金仓数据库进行操作,并提供代码示例。安装金仓数据库驱动在使用Python操作金仓数据库之前,需要先安装相关的驱......
  • Java扩展Nginx之三:基础配置项
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览经历了前面两篇的入门和编译源码之后,从本篇起,咱们用理论结合实战的方式进入系统的nginx-clojure学习之旅作为《Java扩展Nginx》系列的第三篇,本文会与大家一起了......
  • Java版人脸跟踪三部曲之三:编码实战
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览作为《Java版人脸跟踪三部曲》系列的终篇,本文会与大家一起写出完整的人脸跟踪应用代码前文《开发设计》中,已经对人脸跟踪的核心技术、应用主流程、异常处理等方......
  • 紫微斗数个人经验之三合或者四化看哪个
    按照我个人这几年的经历来看,一个人命财官在流年的三合有着决定性的作用,一个人的感受和体会在某一年都极大的受当年本命的三合所影响,进而影响六亲戚宫。其实很好理解,结合到现实来看,本命当年混的不好,六亲周遭也差不多会鸡飞狗跳,如果有来自六亲的照顾,讲真,除非是老爸就是董事长,现实生......
  • 分区表创建唯一约束
    若要在已分区表上创建unique或primarykey约束,分区键必须不包含任何表达式或函数调用,并且约束的列必须包含所有分区键列。存在此限制是因为组成约束的各个索引只能在其自己的分区内直接强制唯一性;因此分区结构本身必须保证在不同分区中不存在重复CREATETABLEtracking_tracking......
  • Jmeter学习之三_知识梳理
    Jmeter学习之三_知识梳理背景简单学习了Jmeter的两个用例感觉可以继续深入学习一下Jmeter了.所以想着趁体检入职之前继续学习完善一下.希望能够继续提高Jmeter的相关知识1.什么是Jmeter?ApacheJMeter,是一个100%纯Java的开源软件,旨在加载测试功能行为和测量性能。它......
  • 人大金仓学习之二_ksh和kddm的学习
    人大金仓学习之二_ksh和kddm的学习摘要承接上一篇文章主要是这里总结一下ksh相关的文档.这里学习了很多文档:https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-kddmhttps://help.kingbase.com.cn/v8/perfor/sql-op......
  • 人大金仓学习之一_kwr的简单学习
    人大金仓学习之一_kwr的简单学习摘要周末在家想着学习一下数据库相关的内容.网上找了不少资料,想着直接在本地机器上面进行一下安装与验证理论上linux上面应该更加简单.windows上面可能不如linux方便主要是记录一下使用和注意事项.ISO下载直接在人大金仓的官网上面......
  • MySQL分区表各个分区如何创建在不同目录
     MySQL分区表各个分区如何创建在不同目录 分区表无法创建在共享表空间(系统表空间,通用表空间),只能放在不同的独立表空间上。以下是分区表不同分区放在不同目录的示例:CREATETABLEzkm.employees(idINTNOTNULL,fnameVARCHAR(30),lnameVARCHAR(30),......