问题标签 [columnstore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-s3 - MemSQL 列存储表磁盘与内存
我有一个包含 8 个 m3.2xlarge 叶节点(2x80 SSD,30GB RAM)的集群。
关于我的数据:
- 我有一个数据库
- 我有一个列存储表。
- 我的数据位于 s3 中。
- S3 文件大小为 250GB。
- 数据分为 40 个 6GB 文件。
当我尝试将此数据加载到表中时,导入过程在加载大约 60GB(10 个文件)的数据后失败。此时,Leaf MemSQL 内存几乎已满(212GB)。磁盘容量为 1.64TB,但仅使用了大约 150GB。
据我了解,ColumnStore 表位于磁盘中。如果是这样,为什么磁盘没有填满,而是叶子内存用完了?
需要注意的几点:
- 导入过程不断尝试处理其余文件并在每个文件中加载部分数据并失败。
- 在 8 个叶节点中,只有 2 个完全填满了内存(30GB 中有 27 个)。其余的约为 17GB
- 我使用 cloudformation 来设置集群,所有参数都设置为默认值。
我配置不正确吗?
任何帮助表示赞赏。
谢谢,拉姆。
sql - 列式数据库优化与关系型数据库优化有何不同?
我有以下数据库结构,存储在关系数据库中:
- 两个事实表,每个表约 8000 万行
- 具有 300,000 - 500,000 行的三个维度表
- 两个事实表都有 3 个外键,用于连接维度表
- 一张安全表也有 3 个外键用于连接维度表
一位开发人员正在使用我的数据创建一个使用列式数据库的应用程序。他们一直遇到性能问题,当我建议向他们的表中添加索引/键时,他们说索引列式数据库不会提高性能。结果,他们要求我将事实表与维度表结合起来。
这似乎与我对数据库管理基本原则的了解相矛盾。列式数据库真的不能使用索引来提高性能吗?应采取哪些步骤来优化色谱柱性能?
我正在寻求高级信息,但为了完整起见,关系数据库是Teradata,列数据库是SAP HANA。
database - MariaDB 列存储 LAST_INSERT_ID() 替代
环境:
操作系统:CentOS 7.2
数据库服务器:10.1.23-MariaDB 列存储 1.0.9-1
2个测试数据库,1个InnoDB和1个Columnstore:
问题:
我在 InnoDB 表中运行了几个插入:
当我想获取最后插入的 id 时,我运行以下命令:
并且结果正确显示了在当前会话期间插入的最后一个 ctlid 值,无论是否有其他并发会话在该 InnoDB 表中运行插入并触发创建其他 ctlid 值。到目前为止,一切都很好..
现在,我对 Columnstore 表执行了几次插入操作:
我想实现与上述相同的行为,但不幸的是,Columnstore 忽略了这一点:
我使用了以下替代方法:
但两者都显示出一个主要限制:如果其他并发会话运行插入,则上述两个查询的结果会受到这些插入生成的自动增量值的影响。基本上我可能不会得到预期的最后插入的 id,但如果其他会话并行创建自动增量值,我可能会得到更大的。
我也尝试过:
锁表
执行插入
使用获取最后一个插入 id
select callastinsertid('test_cs')
之后解锁桌子
但看起来列存储不支持锁定表。
是否有可能使用 Columnstore 实现一致的最后插入 id(每个会话)?
我们的计划是将我们的一些功能从 MariaDB/MySQL 切换到 Columnstore,但上面的限制非常阻塞。
sql-server - 如何优化 SQL Server 列存储对齐
我有一个用于 IOT 指标(时间序列数据)的聚集列存储索引表。它包含超过 10 亿行,结构如下:
从 2008 年到现在,有大约 10,000 个不同的 DeviceId 值和时间戳。针对该表的典型查询如下所示:
当我执行此查询时,我会得到以下性能指标:
因为目前像上面所说的查询会读取太多的段,我相信:
我相信这没有得到很好的优化,因为读取了 11 个段以仅检索 10 亿个源行中的 212 个(在分组/聚合之前)
然后我运行 Niko Neugebauer 的出色脚本来验证我们的设置和列存储对齐https://github.com/NikoNeugebauer/CISL/blob/master/Azure/alignment.sql,我在重建列存储聚集索引后得到了这个结果:
MetricId 和 TimeStamp 列的最佳对齐分数为 100%。我们如何确保 DeviceId 列也很好地对齐?我在初始聚集(行存储)索引中使用了列顺序,这是可以优化的地方吗?
columnstore - 是否可以在 clickhouse 中通过插入查询直接存储 HyperLogLog / uniqState() 状态?
我们可以使用 AggregatedMergeTree 表引擎,它可用于聚合行。
通常在聚合数据中,我们对存储所有唯一标识符不感兴趣,并且仍然希望进行不同的计数。我们仍然希望能够进行另一个聚合以在之后获得这些行的唯一计数(通过选择查询中的分组行)。这就是 HyperLogLog 派上用场的地方,它被实现为 clickhouse 中的 uniqState 函数。
我想通过插入查询直接存储一个超级日志,并从我的客户端应用程序将其提供给 clickhouse 表。这可能吗?
sql-server - 使用多个连接加速 SQL 查询
我有一个运行中型 SQL Server express 数据库的 .NET 电子商务解决方案。系统查询涉及许多连接(可能有 20 个表)的订单数据,这非常慢,特别是在大量使用期间,我想我已经用尽了索引表和优化查询的选项。
我现在相信最好的选择是非规范化 - 请参阅https://msdn.microsoft.com/en-us/library/cc505841.aspx
我想知道的是:
- SQL Server 列存储索引会是更好的选择吗?
- 我正在考虑在非规范化表上使用内存中 OLTP,因为内存中的数据无疑会使查询更快,但它似乎不是预期的用途,我应该这样做吗?
- 我应该改用 ElasticSearch 之类的东西吗?与 SQL Server 内存中 OLTP 相比有什么好处?
- 我应该改用 SQL Server OLAP 吗?好像有点矫枉过正...
sql - 无法在 Mariadb 列存储中创建文本数据类型
https://mariadb.com/kb/en/library/columnstore-create-table/
这么说,它的工作原理..
DROP TABLE IF EXISTS `orders`;
CREATE TABLE orders (
orderkey INTEGER,
customer VARCHAR(45)
) ENGINE=ColumnStore;
此页面说支持 TEXT 数据类型。
https://mariadb.com/kb/en/library/columnstore-data-types/
ColumnStore 支持以下数据类型: TEXT
但这不起作用..
DROP TABLE IF EXISTS `orders`;
CREATE TABLE orders (
orderkey INTEGER,
customer TEXT
) ENGINE=ColumnStore;
ERROR 1178 (42000): The storage engine for the table doesn't support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
我正在运行 1.0.11。我是这样理解的:
wget https://downloads.mariadb.com/enterprise/htxx-hpee/mariadb-columnstore/1.0.11/ubuntu/dists/xenial/main/binary_amd64/mariadb-columnstore-1.0.11-1-xenial.x86_64.deb.tar.gz
我的安装代码在这里:
https://github.com/dgleba/vamp206a/blob/master/apps/mcs/mariadbcolumnstore-step1.sh#L84
我然后运行a2/24start.sh
,/apps/mcs/mariadbcolumnstore-step1.sh
然后按照中的命令...step2.sh
任何人都可以阐明文档说 TEXT 受支持的事实,但我收到此错误?
sql - SQL Server 中的列存储索引
SQL Server 中的列存储索引是否仅在查询使用聚合函数时有用?