都是变长存储的,查询性能一样。
可以尝试将文件字符集视为gbk进行字符集转换。 以文件“origin.txt”为例,假设用命令查看其字符集得到其当前字符集为iso-8859-1:
file --mime-encoding origin.txt
返回值[假设]:iso-8859-1
使用iconv命令转换,将文件字符集转换为utf-8:
iconv -f iso-8859-1 -t utf-8 origin.txt > origin_utf-8.txt
若此时发现转换后得到的origin_utf-8.txt文件中还存在乱码,我们就可以将origin.txt的原字符集视为gbk,重新转换:
iconv -f gbk -t utf-8 origin.txt > origin_utf-8.txt
目前StarRocks中varchar(n),n限制的是字节数,MySQL限制的是字符数,所以对应MySQL那边的表,n可以给3倍或者4倍,一般也不会占更多存储。
不可以,只能是date、datetime或int整型。
show data
可以看到,可展示数据量、副本数量以及统计行数。注意数据统计,有一定的时间延迟。
ALTER DATABASE example_db SET DATA QUOTA 10T;
改动db的quota,调整这个db的容量上限。
目前没有upsert语法,无法更新表中单独的几个字段,暂时只能通过「更新表模型」或者「delete+insert」来实现全字段的更新。
类似CK的分区卸载、装载,跨表分区移动等功能。 下面以原子替换表 table1 的数据,或 table1 的分区数据,为例。可能比insert overwrite更安全些,可以先检查下数据。
-
创建一张新表table2;
create table2 like table1;
-
使用stream load / broker load /insert into 等方式导入数据到新表 table2 中;
-
原子替换 table1 与 table2:
ALTER TABLE table1 SWAP WITH table2;
这样就可以进行表的原子替换。
同样可以用「导入临时分区」的方式进行替换。
-
创建临时分区:
ALTER TABLE table1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01");
-
向临时分区导入数据;
-
原子替换「分区」:
ALTER TABLE table1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);
这样可以导入数据后做一定的验证以后再替换,可以进行临时分区的原子替换。
问题描述:
重启集群fe后报该错且fe无法启动。
解决方案:
是bdbje的一个bug,社区版和1.17版本(不含此版本)以前重启会小概率触发该bug,可以升级到1.17及更高版本,已修复该问题。
问题描述:
msg:Broker list path exception
path=hdfs://172.31.3.136:9000/user/hive/warehouse/zltest.db/student_info/*, broker=TNetworkAddress(hostname:172.31.4.233, port:8000)
解决方案:
namenode的地址和端口跟运维人员确认是否正确,权限有没有开启
问题描述:
msg:get hive partition meta data failed: java.net.UnknownHostException: emr-header-1.cluster-242
解决方案:
需要把集群里的host文件传一份到每个BE机器上,并确认网络是通的。
问题描述:
查询同一sql前几次查询还行,后面报错了,重新建表后没报错了。
MySQL [bdp_dim]> select * from dim_page_func_s limit 1;
ERROR 1064 (HY000): HdfsOrcScanner::do_open failed. reason = Invalid ORC postscript length
解决方案:
目前的版本fe和hive的信息同步是有时差的2h,期间表数据有更新或者插入,会导致scan的数据和fe的判断不一致,导致出现这个错。新版本增加手动reflush功能,可以刷新表结构信息同步。
问题描述:
MySQL8.0版本默认的认证方式是caching_sha2_password MySQL5.7版本默认则为mysql_native_password 认证方式不同,外表链接出错。
解决方案:
两种方案:
- 连接终端
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
- 修改my.cnf文件
vim my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password
执行drop table时磁盘空间会过一会释放,如果想要快速释放磁盘空间可以使用drop table force,使用force会有短暂的等待时间,如果执行 drop table force,则系统不会检查该表是否存在未完成的事务,表将直接被删除并且不能被恢复,一般不建议执行此操作。
可以通过select current_version();
或者CLI执行sh bin/show_fe_version.sh
查看版本
可以参考tablet数量,元数据信息都保存在fe的内存,一千万个tablet内存使用在20G左右,目前支持的meta上限约为该级别。
StarRocks是多线程计算,查询时间是查询线程所用的时间,ScanTime是所有线程使用的时间加起来的时间,查询时间可以通过执行计划下的Query下的Total查看。
不支持
StarRocks的并发量级建议根据业务场景,或模拟业务场景实际测试一下。在客户的一些场景下,压到过2、3万的QPS。
第一次查询读盘跟磁盘性能相关,第一次后操作系统的pagecache生效,再次查询会先扫描pagecache,速度提升
BE节点最小配置个数是1个,支持单节点部署,推荐集群部署性能更好,be节点需要支持avx2,推荐配置8核16G及以上机器配置
可以通过创建单独用户后,创建View授权给用户进行数据权限控制
只有leader所在fe可以查看,因为report信息只汇报给leader节点。
可以通过 show create table xxx
查看。
目前暂时不支持函数默认值,需要写成常量。