摘要: TimescaleDB是基于PostgreSQL数据库打造的一款时序数据库,插件化的形式,随着PostgreSQL的版本升级而升级,不会因为另立分支带来麻烦。 TimescaleDB具备以下特点 1. 基于时序优化 2. 自动分片(按时间、空间自动分片(chunk)) 3. 全SQL接口 4. 支持垂直于横向扩展 5. 支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器ID,用户ID等) 6. 支持多个SERVER,多个CHUNK的并行查询。分区在TimescaleDB中被称为chunk。 7. 自动调整CHUNK的大小 8. 内部写优化(批量提交、内存索引、事务支持、数据倒灌)。 内存索引,因为chunk size比较适中,所以索引基本上都不会被交换出去,写性能比较好。 数据倒灌,因为有些传感器的数据可能写入延迟,导致需要写以前的chunk,timescaleDB允许这样的事情发生(可配置)。 阅读全文
posted @ 2021-10-28 19:11 古道轻风 阅读(2152) 评论(0) 推荐(2) 编辑
摘要: 地理空间数据类型 geography 是作为 SQL Server 中的 .NET 公共语言运行时 (CLR) 数据类型实现的。 此类型表示圆形地球坐标系中的数据。 geography 数据类型存储椭球体(圆形地球)数据,如 GPS 纬度和经度坐标SQL Server 。 SQL Server 支持 geography 空间数据类型的一组方法。 这些方法包括开放地理空间信息联盟 (OGC) 标准和对该标准的一组 Microsoft 扩展所定义的 geography 方法。 SQL Server 2008 在几何图形实例上支持开放地理空间联盟 (OGC) 方法。 阅读全文
posted @ 2021-10-28 18:55 古道轻风 阅读(1248) 评论(0) 推荐(0) 编辑
摘要: 对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象(Handler Object)的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的接口调用。所以分区表对于 SQL 层来说是一个完全封装底层实现的黑盒子,对应用是透明的,但是从底层的文件系统来看就很容易发现,每个分区表都有一个使用 # 分隔命名的表文件。 MySQL 实现分区表的方式——对底层表的封装——意味着索引页是按照分区的子表定义的,而没有全局索引。 MySQL 在创建表时使用 PARTITION BY 子句定义每个分区存放的数据。在执行查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询就无须扫描所有分区。 分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中。这样做可以将相关的数据存放在一起,另外,如果想一次批量删除整个分区的数据也会变得很方便。 阅读全文
posted @ 2021-10-28 18:51 古道轻风 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 今天,我们将研究如何使用Benchmark.Net来测试代码性能。借助基准测试,我们可以创建基准来验证所做的更改是否按预期工作并且不会导致性能下降。 并非每个项目都需要进行基准测试,但是如果您正在开发的是NuGet程序包或通用dll,则很有意义。 阅读全文
posted @ 2021-10-28 15:43 古道轻风 阅读(157) 评论(0) 推荐(1) 编辑