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

人大,学习,之三,空间,磁盘,存储,分区表 · 浏览次数 : 110

小编点评

## 人大金仓数据库性能测试总结 **性能分析目标:** * 提升数据库性能,优化磁盘存储效率。 * 将多个硬盘都使用上,实现最大化性能。 **主要技术:** * 表空间与跨磁盘存储。 * 分区表分表存储。 * Hash分区。 **主要结论:** * 针对 OLTP 类型的数据库,跨磁盘存储可以最大化性能,通过多个表空间进行分布存储,实现高效的数据读取和写入。 * 对于数据目录的设置,建议将目录放置与kingbase用户的属主目录,并给目录分配与kingbase用户相同的路径。 * 对于跨磁盘存储,可以创建多个表空间,并通过 `tablespace` 方法进行分布存储。 * 对分区表分表存储场景建议采用 `range` 或 `hash` 分区。 **其他建议:** * 进行性能测试以评估不同设置下的性能提升效果。 * 在实际使用中,需要根据业务需求选择合适的存储和分区方法。

正文

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


背景

最近在用人大金仓的数据库.
前期学习了 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) ;

与人大金仓学习之三-表空间与跨磁盘存储和分区表相似的内容:

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

# 人大金仓学习之三-表空间与跨磁盘存储和分区表 ## 背景 ``` 最近在用人大金仓的数据库. 前期学习了 kwr和ksh等工具. 今天想验证一下性能相关的情况. 因为机器正好有多个磁盘的分区. 想着能够将所有的硬盘都用上. 提高性能, 感觉总体还不错, 所以想总结一下. 注意这里只考虑 OLTP

人大金仓学习之一_kwr的简单学习

# 人大金仓学习之一_kwr的简单学习 ## 摘要 ``` 周末在家想着学习一下数据库相关的内容. 网上找了不少资料, 想着直接在本地机器上面进行一下安装与验证 理论上linux上面应该更加简单. windows 上面可能不如linux方便 主要是记录一下使用和注意事项. ``` ## ISO下载

人大金仓学习之二_ksh和kddm的学习

# 人大金仓学习之二_ksh和kddm的学习 ## 摘要 ``` 承接上一篇文章 主要是这里总结一下ksh相关的文档. 这里学习了很多文档: https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-opt

人大金仓学习之四-kmonitor

# 人大金仓学习之四-kmonitor ## 背景 ``` kmonitor 其实时一个很好的工具和思路 开元的软件封装一下, 减轻技术复杂度,提高部署效率 并且能够更加快速的定位解决问题. 能够极大的提升客户体验. 并且界面比较好看, 比kwr 看起来高大上多了. 不仅可以解决部分实际问题, 也可

Jmeter学习之五_跟踪被测试服务器的performance

# Jmeter学习之五_跟踪被测试服务器的performance ## 背景 ``` 这几天简单学习了一些基本的测试过程. 可以实现一些简单基本的功能了. 今天晚上继续进行了jmeter的一些学习. 想着可以在测试人大金仓的同时可以查看一下本地的机器性能. ``` ## 用到的工具以及资料 ```

Jmeter学习之四_kingbaseV8R6数据库的简单验证

# Jmeter学习之四_kingbaseV8R6数据库的简单验证 ## 背景 ``` 周一没去报道, 因为我忘记体检了... 继续在家进行学习提高自己. jmeter周末时开始看的. 今天想着继续研究一下对数据库的处理 突然发现人大金仓的官方csdn有一个文档, 所以想着偷师,并且总结学习一下.

人大金仓备份恢复的简单学习

人大金仓备份恢复的简单学习 背景 最近公司里要适配人大金仓 想着最快的办法是将自己的数据库备份恢复到现场 发现备份很简单. 理论上恢复应该也类似. 想着能够模仿PG数据库的模式进行相关的操作. 备份操作 cd /opt/Kingbase/ES/V8/Server/bin/ ./sys_dump -h

[转帖]人大金仓数据库分区表

分区表 声明式创建分区 按列创建分区(PARTITION BY LIST) 将学员表student按所在城市使用partition by list创建分区 创建分区表(基表) 创建格式 create table 表名(字段名 数据类型)PARTITION BY LIST(要分区的字段名) 创建子分区

[转帖]人大金仓数据库的备份与还原

人大金仓数据库的备份与还原 文章目录 人大金仓数据库的备份与还原前言备份sys_dump 命令 还原ksql 命令sys_restore 一. 从人大金仓数据库备份还原到人大金仓数据库二 从postgresql数据库备份还原到人大金仓数据库 后记 前言 本文记录一次使用人大金仓数据库(Kingbas

人大金仓数据库连接异常简单分析查看的方法

# 人大金仓数据库连接异常简单分析查看的方法 ## 背景 ``` 这边一个测试环境,人大金仓4000的连接池 最近出现多次 连接池用光的问题. 想着简单分析一下. 给研发同事进行问题定位. 这里简单记录一下 ``` ## 问题流程 ``` 研发反馈数据库无法连接. 我这边之前部署了一套 kmonit