TokuDB索引结构TokuDB索引结构 网易杭州研究院---胡争(博客:openinx.github.io) TokuDB简介 • 基于分形树实现的MySQL存储引擎 • Tokutek公司2007年研发,2013年开源 • 2015年Percona公司收购Tokutek公司 • TokuDB内部的K-V存储引擎为ft-index • TokuMx: ft-index + MongoDB Server层代码 插入性能大大高于InnoDB(分形树vs B+树) • 查询性能略低于InnoDB • 在线执行DDL操作(不阻塞写操作) • 超高压缩率(TokuDB 4M vs InnoDB 16K) 更高性能,更低成本! 分形树索引结构(一) 分形树结构(二) • msg_buffer – 先进先出队列 • BasementNode(OMT) – 弱平衡二叉树 – 增删改查期望复杂度O(logN) • 页大小默认4M。0 码力 | 19 页 | 1.97 MB | 1 年前3
索引与切片索引与切片 主讲人:龙良曲 Indexing ▪ dim 0 first select first/last N select by steps select by specific index … select by mask ▪ .masked_select() select by flatten index 下一课时 Tensor变换 Thank You.0 码力 | 10 页 | 883.44 KB | 1 年前3
2022年美团技术年货 合辑异通过高优参数扰动生成,在最优局部进行参数组网格局部扰动。模型融合方 56 > 2022年美团技术年货 法一般 Blending、Stacking 或简单 Mean Pooling 等,融合前进行需要进行 模型粒度剪枝(去除效果较差的模型避免影响融合效果)与正则化。 3.4 AutoML 框架近期实战:MDD Cup 2021 美团外卖图谱推荐 比赛冠军方案 在 2021 年 8-9 月美团举行的内部算法比赛 Spatial-temporal Gated DNN 更注重时空融合信息对于预 测值的影响,由于需要预测的时间序列问题,更侧重于不同的时间、空间信息有能够 将差异性建模充分。而在美团业务中的时空网络注重于细粒度刻画空间信息,源于不 同的球面距离,不同的区块位置影响大,需要多重信息深度建模。更多详情,大家 可参考团队的 CIKM 论文:Trilateral Spatiotemporal Attention 团队在搜索、推荐、广告、配送等业务的长期落地实践中,总结实 践经验,自主设计研发了图神经网络框架 Tulong 以及配套的图学习平台,较好地解 决了上述问题。 ● 首先,我们对当前流行的图神经网络模型进行了细粒度的剖析,归纳总结出了 一系列子操作,实现了一套通用的模型框架。简单修改配置即可实现许多现有 的图神经网络模型。 ● 针对基于子图采样的训练方式,我们开发了图计算库“MTGraph”,大幅优化0 码力 | 1356 页 | 45.90 MB | 1 年前3
2. ClickHouse MergeTree原理解析-朱凯互联数据资源、为组织数字资产管理运营、数据探索、分析赋能! 数据汇聚 专业的数据资源管理 自助分析 价值挖掘 多维探索 灵活 快速 自助 洞察 预警 消息 交互 Agenda. 数据分区 01 / 一级索引&二级索引 02 / 数据存储 03 / 数据标记 04 / 表引擎 表引擎,是ClickHouse设计实现中的一大特色。可以说正是由表引擎,决定了一张 数据表最终的性格,它拥有何种特性、数据以何种形式被存储以及如何被加载。 geTree)最 为强大,在生产环境绝大部分场景中都应该使用此系列的表引擎。 只有合并树系列的表引擎才支持主键索引、数据分区、数据副本和数据采样这些特 性,同时也只有此系列的表引擎支持ALTER相关操作。 合并树家族 其中MergeTree作为家族中最基础的表引擎,提供了主键索引、数据分区、数据副 本和数据采样等所有的基本能力,而家族中其他的表引擎则在MergeTree的基础之 上各有所长。 [SETTINGS name=value, 省略...] 分区键 排序键 主键 index_granularity = 8192 索引粒度 MergeTree的存储结构 数据以分区的形式被组织 , PARTITION BY 各列独立存储, 按ORDER BY 排序 一级索引, 按PRIMARY Key 排序 数据分区 数据的分区规则 l 不指定分区键 如果不使用分区键,既不使用PARTITION0 码力 | 35 页 | 13.25 MB | 1 年前3
美团点评2018技术年货..... 境外业务性能优化实践 91 ...................................................................... 美团广告实时索引的设计与实现 106 ...................................................................... 大众点评账号业务高可用进阶之路 123 件存储索引、数据文件节点过多以及随机 IO 恶化的 问题。 新版消息文件存储为了同时兼顾读写性能,引入了二级索引存储方案,对同一个应用的 IP 节点进行合 并,并且保证一定的顺序存储。下图是索引结构的最小单元,每个索引文件由若干个最小单元组成。每个 CAT 3.0 开源发布,支持多语言客户端及多项性能提升 - 美团技术团队 单元分为 4×1024 个桶,第一个桶作为我们的一级索引 Header,存储 Header,存储 IP、消息序列号与分桶的映射信 息。剩余 4×1024 - 1 个桶作为二级索引,存储消息的地址。 新版消息文件存储文件节点数与应用数量成正比,有效减少随机 IO,消息实时存储的性能提升显著。以 下为美团点评内部 CAT 线上环境单机消息存储的数据对比: 未来规划 未来规划 技术栈升级 拥抱主流技术栈,降低学习和开发成本,使用开源社区主流技术工具(Spring、Mybatis等),建设0 码力 | 229 页 | 61.61 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅每个任务包含 8 个元素 tbb::static_partitioner ,指定区间的粒度 创建了 2 个线程 2 个任务 每个任务包含 16 个元素 tbb::simple_partitioner 创建了 4 个线程 32 个任务 每个任务包含 1 个元素 tbb::simple_partitioner ,指定区间的粒度 创建了 4 个线程 8 个任务 每个任务包含 4 个元素 tbb::auto_partitioner 记录历史,下次根据经验自动负载均衡 tbb::simple_partitioner 粒度为 1 太细了,效果不好 tbb::static_partitioner 粒度自动变成 n / 4 ,效果好 tbb::simple_partitioner 粒度手动设为 n / 8 ,效果稍微更好一点 tbb::auto_partitioner 自动判断合适的粒度,效果也不错 例子:矩阵转置 使用合适的 grain 大小, 大小, simple_partitioner 比 auto_partitioner 快 3.31 倍 原因 • tbb::simple_partitioner 能够按照给定的粒度 大小( grain )将矩阵进行分块。块内部小区 域按照常规的两层循环访问以便矢量化,块外 部大区域则以类似 Z 字型的曲线遍历,这样 能保证每次访问的数据在地址上比较靠近,并 且都是最近访问过的,从而已经在缓存里可以0 码力 | 116 页 | 15.85 MB | 1 年前3
Greenplum 精粹文集分布式存储和分布式计算理论刚刚被提出来,Google 的两篇著名论文 发表后引起业界的关注,一篇是关于 GFS 分布式文件系统,另外一篇 是关于 MapReduce 并行计算框架的理论,分布式计算模式在互联网 行业特别是收索引擎和分词检索等方面获得了巨大成功。 Big Date2.indd 1 16-11-22 下午3:38 2 由此,业界认识到对于海量数据需要一种新的计算模式来支持,这种 模式就是可以支持 还研发了非常多的高级数据分析管理功能和企业级管理模 块,如下这些功能都是 Postgresql 没有提供的: ·外部表并行数据加载 ·可更新数据压缩表 ·行、列混合存储 ·数据表多级分区 ·Bitmap 索引 ·Hadoop 外部表 ·Gptext 全文检索 ·并行查询计划优化器和 Orca 优化器 ·Primary/Mirror 镜像保护机制 ·资源队列管理 ·WEB/Brower 监控 按照文件切片方式分布式存储(无模式)。 ·两者采用的数据分布机制不同,MPP 采用 Hash 分布,计算节点 和存储紧密耦合,数据分布粒度在记录级的更小粒度(一般在 1k 以下);Hadoop FS 按照文件切块后随机分配,节点和数据无耦合, 数据分布粒度在文件块级(缺省 64MB)。 ·MPP 采用 SQL 并行查询计划,Hadoop 采用 Mapreduce 框架。 基于以上不同0 码力 | 64 页 | 2.73 MB | 1 年前3
TiDB v8.0 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 61 2.3.2 索引和约束 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 89 3.3.4 创建、查看和删除索引 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 248 4.5.4 创建二级索引· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 4805 页 | 101.28 MB | 1 年前3
TiDB v8.1 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 46 2.3.2 索引和约束 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 75 3.3.4 创建、查看和删除索引 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 233 4.5.4 创建二级索引· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 4807 页 | 101.31 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化字节的跨步访问,都会导致数据全部被读取出来。而超过 64 字节的 跨步,则中间的缓存行没有被读取,从而变快了。 缓存行决定数据的粒度 • 结论:访问内存的用时,和访问的字节数 量无关,和访问的每个字节所在的缓存行 数量有关。 • 可见,能否很好的利用缓存,和程序访问 内存的空间局域性有关。 缓存行决定数据的粒度(续) • 所以我们设计数据结构时,应该把数据存 储的尽可能紧凑,不要松散排列。最好每 个缓存行里要么有数据,要么没数据,避 内部是 SOA ,而外部仍是一个 vector的 AOS—— 这种内存布局称为 AOSOA 。 • 缺点是必须保证数量是 1024 的整数倍, 而且因为要两次指标索引,随机访问比较 烦。 • 这里的 1024 并非随意选取,而是要让每 个属性 SOA 数组的大小为一个页 ( 4KB )才能最高效,原因稍后会说明。 AOSOA :注意,内部 SOA 的尺寸不宜太小 SOA 分开存”是没问题的。 • 而且 SOA 在遇到存储不是 vector ,而是稀疏的哈希网格之类索引有一定 开销的数据结构,可能就不适合了。这就是为什么王鑫磊最喜欢 AOSOA :在高层保持 AOS 的统一索引,底层又享受 SOA 带来的矢量化 和缓存行预取等好处……就是随机索引比较麻烦。 结构体剥离: https://blog.csdn.net/qq_36287943/artic 0 码力 | 147 页 | 18.88 MB | 1 年前3
共 683 条
- 1
- 2
- 3
- 4
- 5
- 6
- 69













