大数据-关于数据库分表后的 业务逻辑应该是怎么样,求解答!

问题描述

关于数据库分表后的 业务逻辑应该是怎么样,求解答!
数据库有一张表 数据太多 导致查询非常慢,分表后 业务逻辑是怎样的:

假如把一张表分成三张表,那么在项目里面写查询的时候是要连续查三张表么?

解决方案

如果是你的表太宽也就是字段太多可以考虑分表,按业务逻辑拆分
如果是数据量太大导致查询缓慢,建议不分表。因为只是查询的话必然会对全表做一次扫描,起不到提高查询效率的作用。
可以考虑以下几种方式:
1. 通过索引的方式,使用索引字段查询
2. 在表上建立分区,查询时指定分区条件
3. 如果是关联查询,可以看看是否能设置关联方式、设置驱动表等

解决方案二:
如果是你的表太宽也就是字段太多可以考虑分表,按业务逻辑拆分
如果是数据量太大导致查询缓慢,建议不分表。因为只是查询的话必然会对全表做一次扫描,起不到提高查询效率的作用。
可以考虑以下几种方式:
1. 通过索引的方式,使用索引字段查询
2. 在表上建立分区,查询时指定分区条件
3. 如果是关联查询,可以看看是否能设置关联方式、设置驱动表等

解决方案三:
优化是要根据具体情况而定的

如果你查询还要关联所有的表的话 还不如不分表

如果按业务分 可以达到不需要关联所有表的话 可以考虑分表

时间: 2024-08-04 13:58:36

大数据-关于数据库分表后的 业务逻辑应该是怎么样,求解答!的相关文章

phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)

phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展) 前言 时隔半个月随着PHP7的推出为PHP打了一瓶兴奋剂,在性能提升了一倍的情况下我们会逐渐发现,瓶颈会集中在数据库操作,那我们的内容就接着数据库读写分离,来聊聊分表分库应该怎么玩,应为PhalApi的分表分库并不是非常方便,笔者在这里提供了一个分表分库数据库集群的拓展,详细文档请见博客基于PhalApi的DB集群拓展 V0.1bate 大家可以自行在开源中国扩展Git地址中找到Cluster进行下载使用. 先在这里感谢phalap

数据库分表后,并发环境下,生成全局id生成的几种方式

最近一个项目由于数据量变大,需要进行数据分表.数据存储在淘宝的tddl上.分表后,原先的自增id就不能使用了.tddl对java支持很好,分表后无需考虑全局id的问题.但是这个项目使用的是php进行开发,必须自己生成全局id.以下列出几种分表方案,仅当抛砖引玉. 方法1:使用CAS(compare and swap) 其实这里并不是严格的CAS,而是使用了比较交换原子操作的思想. 生成思路如下: 每次生成全局id时,先从sequence表中获取当前的全局最大id.然后在获取的全局id上做加1操作

mysql大数据分库和分表 php解决方案

1,主从复制,读写分离 对主库修改数据,查询使用从库.一主多从,来降低数据库读取压力. 2,分库分表 根据实体业务来分库,分表.如,根据数据的活跃性,根据用户uid等. 3,mysql 不同存储引擎区别 InnoDB 用于数据完整性/写性能要求比较高的应用. MyISAM 适合查询应用.  分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万级别时就

mysql数据库分表后生成全局id的几种方式

 最近一个项目由于数据量变大,需要进行数据分表.数据存储在淘宝的tddl上.分表后,原先的自增id就不能使用了.tddl对java支持很好,分表后无需考虑全局id的问题.但是这个项目使用的是php进行开发,必须自己生成全局id.以下列出几种分表方案,仅当抛砖引玉.    方法1:使用CAS(compare and swap)    其实这里并不是严格的CAS,而是使用了比较交换原子操作的思想.    生成思路如下:    每次生成全局id时,先从sequence表中获取当前的全局最大id.然后在

迎接大数据 国产数据库产品策略盘点

文章讲的是迎接大数据 国产数据库产品策略盘点,前不久的"棱镜门"让国人认识到发展国产软件的重要性,也被认为是国产数据库发展的重要契机.国产数据库在过去发展中一直受到国家的支持,但由于起步较晚,与国外主流数据库之间的差距还很大.但随着大数据时代的到来,国产数据库与国外数据库站在同一起跑线上,获得同样的机遇. 在国产数据库的阵营中,有三家厂商的产品不得不提,分别是南大通用的GBase.达梦数据库DM和人大金仓的Kingbase.接下来,笔者将对这三家国产数据库厂商的产品策略进行盘点,从中找

mysql数据库分表方法总结(1/2)

一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. 根据个人经验,mysql执行一个sql的过程如下: 1,接收到sql; 2,把sql放到排队队列中 ; 3,执行sql; 4,返回执行结果. 在这个执行过程中最花时间在什么地方呢?第一,是排队等待的时间,第二,sql的执行时间.其实这二个是一回事,等待的同时,肯定有sql在执行.所以我们要缩短sql的执行时间. mysq

mongodb 分片代替数据库分表

MongoDB 的Sharding机制解决了海量存储和动态扩容的问题,但离生产环境的高可靠,高可用还有距离,Sharding在单点出现故障时就无能为力了.但是 MongoDB的副本集却可以很轻松的处理单点故障,所以就有了Replica Sets + Sharding的高可用,高安全的架构.Mongodb支持自动分片和划分架构,可以利用它构建一个水平扩展的数据库集群系统,将数据库分表存储在各个sharding节点上. 架构如下:       1,shard服务器:使用Replica Sets确保每

实时大数据存储-实时大数据写入数据库

问题描述 实时大数据写入数据库 项目:IOCP的多线程(工作线程)解析大量客户端发送过来的数据:这个数据量是非常大的,上千个客户端,每50MS发送一个数据包过来,要把他们写入数据库.以下是我做的两种设计,均不能成功. 1.简单地通过程序一条一条地执行SQL语句写入数据库,失败,效率极低,淘汰. 2.我目前的处理是把这个SQL语句做一个拼接(...+SQL语句+;+SQL 语句+:+...),然后一并执行,写入数据库,但是这么设计的话,内存会一直涨,因为写入数据库的速率小于IOCP解析出来的数据所

新闻数据库分表案例

Netkiller MySQL 手札 MySQL MariaDB... Mr. Neo Chan, 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地518131+86 13113668890+86 755 29812080<netkiller@msn.com> 文档始创于2010-11-18 版权 2011, 2012, 2013 Netkiller(Neo Chan). All rights reserved. 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信