首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏采云轩

    ES亿级商品索引拆分实战

    merge": { "scheduler": { "max_thread_count": "2", "max_merge_count": "4" 能否去除全量商品索引,降低数据冗余,降低集群资源占用。 按照何种维度去拆分拆分后的索引是否会有数据倾斜问题。 因此索引拆分最终是按照店铺维度去拆分。 同时基础商品和交易商品的获取,都有对应的使用场景,且调用量较高,所以基础商品索引和交易商品索引的依然保留。 最后就是拆多少个索引,每个索引多少分片。 就迁移速度而言,因为本次和一般的索引拆分不同,不是单纯的将一个索引的数据,按店铺拆分到多个索引上,而需要额外填充字段,所以 Reindex 并不满足。 提升点 效果 储存和写入 储存体积缩减 1TB 左右,写入流量下降 40% 慢查询下降 慢查询下降 99% 性能提升 查询 QPS 上限提升 4 倍左右 总结与思考 本次主要通过索引拆分与合并,来提升查询性能

    92311编辑于 2023-09-01
  • 来自专栏MCNU云原生

    使用索引拆分(Split)和索引收缩(shrink )对Elasticsearch进行优化

    Split功能对当前的分片进行拆分拆分到具有更多主分片的新索引。 二、索引拆分 2.1、索引拆分API和拆分逻辑 Elasticsearch提供了Split API,用于将索引拆分到具有更多主分片的新索引。 data stream的写索引,则不允许进行索引拆分,需要对data stream进行回滚,创建一个新的写索引,才可以对当前索引进行拆分。 换句话说,可以如下拆分: 5→10→30(拆分依次为2和3) 5→15→30(拆分依次为3和2) 5→30(拆分6) index.number_of_routing_shards 是一个静态配置,可以在创建索引的时候指定 目标索引中请求的主分片数量必须是源索引中主分片数量的一个因子。例如,包含8个主碎片的索引可以收缩为4个、2个或1个主碎片,或者包含15个主碎片的索引可以收缩为5个、3个或1个主碎片。

    2.8K20编辑于 2023-03-17
  • 来自专栏sql优化

    OR条件拆分:避免索引失效的查询重构技巧

    ⚙️ 核心技巧:拆分 OR 为 UNION ALL重构方案是将 OR 条件拆分为多个独立查询,通过 UNION ALL 合并结果:SELECT * FROM orders WHERE status = 实践注意事项索引是前提:确保 OR 拆分的每个子条件都有索引支持。警惕重复数据:若拆分后子查询结果可能重复,且业务不允许重复,改用 UNION(但需权衡去重成本)。 参数化防注入:拆分后的多个查询需统一参数化,避免SQL注入风险。通过重构 OR 条件,开发者能将“索引失效”转化为“索引最大化利用”。 用户表(50万行),OR 涉及字段均有索引起点 → ✅决策点1 → ✅决策点2必须拆分 配置表(1千行),OR 涉及字段均有索引 起点 → ✅决策点1 → ❌决策点2保持原查询 ,可不拆分订单表(百万行),status 字段无索引起点 → ❌决策点1 优先创建索引 为什么选择 10 万行作为阈值?

    42321编辑于 2025-06-30
  • 来自专栏小工匠聊架构

    ElasticSearch - 海量数据索引拆分的一些思考

    merge": { "scheduler": { "max_thread_count": "2", "max_merge_count": "4" 改为以下调整开关: index.merge.scheduler.max_thread_count index.merge.policy.* 最大线程数的默认值为: Math.max(1, Math.min(4, 把全量商品索引拆分拆分后的整体全貌如下 拆分后需要进行【多索引联查】 整体迁移流程 整体迁移在设计中主要,分为流量收集,全量写入,增量写入,数据验证,写入方式的异步转同步等阶段。 就迁移速度而言,因为本次和一般的索引拆分不同,不是单纯的将一个索引的数据,按店铺拆分到多个索引上,而需要额外填充字段,所以 Reindex 并不满足。 这样可以做到业务方配置化的索引拆分,分片扩容等,无需任何的开发,进一步的降本增效。 参考 ES亿级商品索引拆分实战

    1.1K20编辑于 2023-08-27
  • 来自专栏SAP最佳业务实践

    SAP最佳业务实践:生产订单拆分-按库存生产(248)-4订单拆分

    image.png 订单拆分 选项 1:按相同物料拆分 使用此功能可以将一份现有生产订单拆分成多份订单,所有这些订单都用于生产相同的物料(但在开始日期和时间等方面存在差别)。 在拆分工序的组件清单上,应针对临时物料传输创建副产品。 4. 选择按钮 订单表头返回。在订单表头屏幕的左侧显示含拆分关系的树控制。在该树控制中将显示含临时子订单编号的节点。 5. 将保存父订单、拆分关系和子订单。更新生产订单后,将自动过账副产品的收货和发货。 9. 针对此订单再次启动事务 CO02 。拆分关系树应显示在订单表头屏幕上。子订单编号应该在拆分关系树中进行填充。 单击拆分关系树中的子订单编号。应显示相应的子订单。 11. 拆分时,将计算执行拆分工序前的计划成本,并将其按比例过账到副产品批次中。 订单已拆分

    5.2K21发布于 2018-03-27
  • 来自专栏changxin7

    4.MySQL索引原理

    具体一页有多大数据跟操作系统有关,一般为4k或8k,也就是我们读取一页内的数据时候,实际上才发生了一次IO,这个理论对于索引的数据结构设计非常有帮助。 这就是为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半。 四 聚集索引与辅助索引 在数据库中,B+树的高度一般都在2~4层,这也就是说查找某一个键值的行记录时最多只需要2到4次IO,这倒不错。 #2、and的工作原理 条件: a = 10 and b = 'xxx' and c > 3 and d =4 索引: 制作联合索引(d,a,b,c) and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

    79910发布于 2019-09-10
  • 来自专栏大数据学习笔记

    Neo4J:索引

    本文链接:https://blog.csdn.net/chengyuqiang/article/details/102685464 创建索引 create index on :Dude(name) ? 使用索引查询 MATCH (n:Dude) WHERE n.name IN ["A1","C1"] RETURN n ? 显式使用索引 match (d:Dude{name:"B2"}) using index d:Dude(name) return d ?

    89810发布于 2019-10-24
  • 来自专栏小工匠聊架构

    MySQL-索引优化篇(4)_索引的维护

    ---- 删除重复索引 举个例子 ,对id 建立了多个索引 ,重复索引 primary key(id) 【主键索引】, unique key(id) 【唯一索引】, index(id)【普通索引】 主键上 MySQL会自动创建索引的,所以就么有必要再对主键建立 唯一索引,更没有必要建立普通索引了。 ---- 删除冗余索引 举个例子 index(a) , index(a,b) 在a上建立普通索引 , 在a 、b 建立了联合索引。 这种情况是冗余的, 只需要保存 那个联合索引中就行了,删除 对a 单独建立的普通索引即可。 因为 a 都在左侧, 所以 查询a, 也是可以走那个联合索引的。 ---- primary key(id), index(a, id) 这种情况是冗余的,因为Innodb中对于二级索引会自动增加 主键索引,所以 也是没必要对a 和 主键id 建立联合索引的。

    50730发布于 2021-08-17
  • 来自专栏bit哲学院

    Python字符串及其操作---索引、合并、拆分、格式化

    2.1索引  序列中的所有元素都是有编号的—从0开始递增。这些元素可以通过编号分别访问。索引有正索引和负索引,可根据实际情况选用。 分片是实际应用中经常使用的技术,被截取的部分称为“子串”Python 3支持的分片格式为:S[i:j:k] 表示:索引S对象中的元素,从索引为i直到索引为j-1,每隔k个元素索引一次,第三个限制k为步长 = {'hello':1,'beautiful':2,'gril':3,'ll':4} print ('-'.join(seq4)) #hello-beautiful-gril-ll #合并目录 import operator.add(1,2) #加法1+2 reduce(operator.add, [1,2,3,4,5]) #(((1+2)+3)+4)+5 #用reduce实现对空字符串”的累计连接,每次连接列表 strs中的一个元素 res = reduce(operator.add,strs,"")  print(res) 3.5 拆分函数  拆分函数将字符串拆分成多个子串。

    2.4K00发布于 2021-01-09
  • 来自专栏Unity开发系列专栏

    OpenCV 4基础篇| OpenCV图像的拆分和合并

    通道拆分 1.1 cv2.split 1.1.1 语法结构 1.1.2 注意事项 1.1.3 代码示例 1.2 NumPy切片 1.2.1 代码示例 2. 通道拆分 1.1 cv2.split 1.1.1 语法结构 b,g,r = cv2.split(img[, mv]) #图像拆分为 BGR 通道。 因此,当你使用 cv2.split() 拆分通道时,得到的通道顺序将是 B、G、R,而不是 R、G、B。 如果要正确显示某一颜色分量,需要增加另外两个通道值(置 0)转换为 BGR 三通道格式,再用 imshow 才能显示为拆分通道的颜色。 import cv2 imgFile = "img/lena.jpg" img1 = cv2.imread(imgFile, flags=1) # flags=1 读取彩色图像(BGR) # 通道拆分

    84000编辑于 2024-05-24
  • 来自专栏逸鹏说道

    维护索引4)——通过重组索引提高性能

    总得来说,重组会清空当前的B-TREE,特别是索引的叶子节点,重组数据页和消除碎片。和重建不同,重组不会添加任何新数据页。 准备工作: 为了了解是否有必要重组索引,需要首先查看碎片程度,如果在10%以下,那一般没必要做什么维护,如果在10%~30%,就建议进行重组。 步骤: 1、 以下各种重组索引的方法: --不指定参数重组索引: ALTER INDEX [idx_refno] ON [ordDemo] REORGANIZE GO --重组表中所有索引 : ALTER INDEX ALL ON [ordDemo] REORGANIZE GO --使用DBCC INDEXDEFRAG重建表上所有索引: DBCC INDEXDEFRAG 分析: 索引重组,也可以称为碎片重组,对单独索引的操作将使用单独的线程。不可以并行操作。所以同一时刻只有一个索引被操作。

    96080发布于 2018-04-11
  • 来自专栏SpringBoot教程

    Springboot整合log4j2(按级别拆分

    logback使用 常用日志框架 java.util.logging:是JDK在1.4版本中引入的Java原生日志框架 Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件 虽然已经停止维护了,但目前绝大部分企业都是用的log4j。 LogBack:是Log4j的一个改良版本 Log4j2:Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了 pom <dependencies> <dependency log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <! --Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!

    1K30编辑于 2023-02-16
  • 来自专栏悠扬前奏的博客

    Neo4j-3.1 索引

    Neo4j支持节点或关系上的索引,以提高程序的性能 可以为具有相同标签名称的所有节点的属性创建索引 可以在MATCH或WHERE或IN运算上使用索引来提高语句的执行效率 索引操作: CREATE Index 创建索引 语法,冒号(:)运算符用于引用节点或关系标签名称: CREATE INDEX ON :<label_name> (<property_name>) Drop Index 丢弃索引 语法,

    47520发布于 2019-12-11
  • 来自专栏IT云清

    4.Elasticsearch索引文档

    存储数据到es中的行为叫做索引索引一个文档前,需要确定这个文档存放在哪里;一个es集群可以包含多个索引,每个索引可以包含多个类型,每个类型中又可以存储不同的文档,每个文档可以有多个属性。 倒排索引: 关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。 索引内 - 4.people索引保存在es集群中 上面这四步,我们用一条命令即可完成 PUT people/user/1 { "id":1, "name":"张三", "age":18, "杭州", "interests": [ "bastkeyball", "football" ], "create_time":"2018-02-04" } PUT people/user/4 { "id":4, "name":"张飞", "age":27, "address":"宁波", "interests": [ "bastkeyball", "football" ]

    76320发布于 2019-01-22
  • 来自专栏图像处理与模式识别研究所

    图像拆分

    img) sum_rows=img.shape[0]#图片垂直尺寸 sum_cols=img.shape[1]#图片水平尺寸 part1=img[0:sum_rows,0:sum_cols//2]#图像拆分 part2=img[0:sum_rows,sum_cols//2:sum_cols]#图像拆分 cv2.imshow('part1',part1) cv2.imshow('part2',part2) cv2.waitKey(0) cv2.destroyAllWindows() 算法:图像拆分是将JPG、PNG、BMP等图像文件分割成若干份。 图像拆分帮助用户快速按照实际需要的比例和像素分割图像,支持水平拆分图像,垂直拆分图像,分块拆分图像。总之,三种拆分方式都支持自定义拆分像素。 首先读取图像 按预设尺寸拆分原始图片,得到局部图片 根据需求去除局部图片中冗余的局部图片 网址:https://tu.sioe.cn/gj/ http://renderhjs.net/shoebox/

    1.7K20编辑于 2022-05-28
  • 来自专栏程序员千羽

    MySQL进阶笔记-4(索引的使用)

    varchar (100), `createtime` datetime, primary key(`sellerid`) )engine=innodb default charset=utf8mb4; 根据前面的两个字段name , status 查询是走索引的, 但是最后一个条件address 没有用到索引4). 不要在索引列上进行运算操作, 索引将失效。 5). 尽量使用覆盖索引,避免select * 尽量使用覆盖索引(只访问索引的查询(索引列完全包含查询列)),减少select * 。 如果查询列,超出索引列,也会降低性能。 如果MySQL评估使用索引比全表更慢,则不使用索引。 10). is NULL , is NOT NULL 有时索引失效。 11). in 走索引, not in 索引失效。 12). 单列索引和复合索引。 尽量使用复合索引,而少使用单列索引

    46550编辑于 2021-12-29
  • 来自专栏用户7737280的专栏

    mysql 有4种不同的索引

    主键索引(PRIMARY) 数据列不允许重复,不允许为NULL,一个表只能有一个主键 唯一索引(UNIQUE) 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。 ,column2); 创建唯一组合索引 普通索引(INDEX) 可以通过 ALTER TABLE table_name ADD INDEX index_name (column); 创建普通索引 可以通过 ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3); 创建组合索引 全文索引(FULLTEXT) 可以通过 ALTER TABLE table_name ADD FULLTEXT (column);https://www.alwdzr.com 创建全文索引 索引并非是越多越好,创建索引也需要耗费资源 ,一是增加了数据库的存储空间,二是在插入和删除时要花费较多的时间维护索引 二级索引:叶子节点中存储主键值,每次查找数据时,根据索引找到叶子节点中的主键值,根据主键值再到聚簇索引中得到完整的一行记录 排除缓存

    1.3K60发布于 2020-09-09
  • 来自专栏学而时习之

    MySQL基础篇4 mysql的索引

    以innodb的一个整数字段索引为例, 这个n差不多是1200, 这颗树高是4的时候, 就可以存1200的三次方这个值.考虑到树根的数据快总在内存中, 一个10亿行的表上一个整数字段的索引, 查找一个值最多只需要访问 如果用身份证号做主键,那么每个二级索引的叶子节点占用约 20 个字节,而如果用整型做主键,则只要 4 个字节,如果是长整型(bigint)则是 8 个字节 所以, 主键长度越小, 普通索引的叶子节点就越小 =500, 对应r4; 在 k 索引树取下一个值 k=6,不满足条件,循环结束 回到主键索引树搜索的过程, 叫做回表. 上述过程读k索引3次(1,3,5), 回表两次(2, 4) 由于查询的结果所需的数据只在主键索引上有, 所以不得不回表, 如何避免回表呢? image.png 索引项是按照索引定义里面出现的字段数据排序的 当你的逻辑需求是查到所有名字是“张三”的人时,可以快速定位到 ID4,然后向后遍历得到所有需要的结果 如果你要查的是所有名字第一个字是“

    62540发布于 2020-05-18
  • 来自专栏全栈程序员必看

    数据库4索引类型_数据库索引类型

    以MKVCache为例,使用的哈希算法在如下文件中: MKHash.h MKHash.cpp DCache在内存中将数据分为索引区和数据区: 数据区用于存储真实的数据 索引区只记录索引的值和对应数据区的地址 哈希区 这里定义了2种哈希索引结构: 主key的索引 联合key的索引 在 tc_multi_hashmap_malloc.h文件中,主key的哈希结构定义: /** * 主key HashItem * key个数 }__attribute__((packed)); _iMainKeyAddr, 主key索引到的数据偏移地址; _iListCount, 相同hash值的主key个数。 uint32_t _iListCount; //链表个数 }__attribute__((packed)); 说明: “联合key”就是二级索引,类似于我们写sql时 现在可以把索引的图补全了: 哈希冲突 前面提到DCache采用链表方式处理哈希冲突,具体如何处理的呢?感兴趣的同学可以去研究一下源码(ps:源码比较难懂,需要下功夫)。

    1.2K30编辑于 2022-11-03
  • 来自专栏葫芦

    服务拆分之基础设施拆分

    服务拆分之基础设施拆分 Infrastructure unbundling of services 背景: 因历史原因, 前期多个服务共用一个rds实例和一个redis实例, 在实际使用中经常会因某一个服务异常导致 故进行基础资源拆分来隔离风险。 本次拆分基于AWS平台 The split is based on AWS 创建原实例的只读副本实例 Create a read-only copy instance of the original instance Redis from AWS into the existing Terraform 参考如下 Refer to the following Terraform反向导出 总结 to summarize 本次拆分可以保证数据 0损失,因进行了k8s pod 副本数调整,会对对拆分的服务根据实际情况会有部分时间不可用,建议在服务访问量低时进行此操作 This split can ensure zero data loss.

    3.7K72编辑于 2021-12-26
领券