案例:
一次在一个项目中有两张表数据比较庞大(线上)
一个是操作日志表:
A 4819556条 插入,修改,查询较多,老的记录查询可能较少,
一个是接口调用表:
B 60719333条 插入和查询频繁
数据量都比较大,这次采用的数据库优化方案是分区。
分区和分表的区别和联系是啥?
分区和分表的目的都是提升数据库的访问性能,而对于应用来说,分区用的是数据库的技术,只要知道表名,应用无需知道数据是放在哪个分区。
分表的话,要做出对应的路由规则,根据分表的KEY键才能知道数据是放在哪个表上。
所以查询的时候,SQL的条件语句最好是带上分区健,这样的话在查询的时候相对效率会高效一些
在做出分区或分表的判断上,一般来说,如果平时访问的量不是特别大,表结构变更也不多,而且历史数据很少访问的情况下,可能会做成分区表,这样平时基本上只要访问最近的分区段,还有利用老数据的清理。
分表一般是数据量非常大,而且访问上没有绝对的热点,基本上所有的数据都有可能会访问到,为了查询的性能和平时DDL的快速会采用分表的方法。
我们这次的分区是是按创建时间来分区的 ,两张表是半年一个分区.那么在查询的SQL中是要求带入创建时间作为where条件的,这样的话可以调高效率。
相关文章
- 数据加载与保存-通用方式 使用df.write.save方法保存数据,同样可通过format指定数据类型。 save方法后需传入保存路径(针对csv、orc、parquet、textFile格式)。 option方法用于设置特定格式的参数。 保存操作可使用SaveMode来指明如何处理数据,如覆盖(overwrite)、追加(append)等,通过mode方法设置。 特定格式保存 与加载类似,Parquet、JSON、CSV等格式均可通过指定format进行保存。 MySQL等关系型数据库的写入也通过JDBC实现,需指定format为jdbc,并传入数据库连接信息及表名。 注意事项
- MySQL创建表时候因多个字段使用timestamp类型而出现Invalid default value for的问题的分析与解决
- MYSQL建表时数据类型的选择
- MySQL 与 MongoDB 的区别-一、如何选择
- Hive面试题:Hive分区表和分桶表的区别
- 大数据之hive分区表和分桶表的区别
- mysql的分区和分表
- 【MySQL】数据库开发技术:内外连接与表的索引穿透深度解析
- MySQL之分库分表后带来的“副作用”你是怎么解决的?-四、水平分库后需要解决的问题
- mysql分区表之二:MySQL的表的四种分区类型介绍