我的理解是数据库其实就是一个存储数据的地方,是为很多人查询服务的地方,如果在数据库里面做大量的数据
统计看似很简单的操作,但是可能是联结了很多的表,会使得情况变得很复杂。服务器负担非常大,查询时间很
长,所以我的建议是查询和统计分离。但是如果真的要大量统计那应该怎么才能最大的优化呢?
比如要查看一个商品的库存。很简单的就是直接去库存表直接读取,但是现在决策者要读到商品的库位(在仓库的位置),入库次数,出库次数,商品的销售统计,商品的上架统计等,这些势必会用到大量的 GROUP BY ,扫表的次数是 N 次方。这时候怎么办呢?
1
enenaaa 2016-12-02 12:10:23 +08:00
数据综合查询本来就是数据库干的活,要不然搞那么多高级 sql 特性干嘛。
怕影响其他服务就 1 、增加硬件资源 2 、在从服务器,备份服务器操作 3 、在人少的时候操作 4 、优化查询 办法很多嘛 |
2
wyntergreg 2016-12-02 12:17:54 +08:00
数据库做存储,查询用文档类查询器
|
3
akira 2016-12-02 13:37:03 +08:00
开个只读库专门处理报表统计,
如果还扛不住,就把数据导到离线 /在线数据分析系统 |
4
dexterzzz 2016-12-02 13:39:44 +08:00
oracle , sql server 有报表和分析引擎
|
5
nandaye 2016-12-02 13:48:42 +08:00
数据仓库,把业务数据都 etl 到仓库,然后仓库的数据做报表的数据基础。这是最专业的做法。你可以看一下 BI 这个概念。
|
6
ebony0319 OP @nandaye 我知道数据仓库的处理方法,只是这是一个流水活动的数据。比如说你去银行取钱,查询你当月的账单很容易,然后在那个表统计你的当月取钱次数也很容易,但是当出现联表,那表的全扫描是一个 N 次方的结果集。
|
7
nandaye 2016-12-02 15:47:56 +08:00
@ebony0319 数据仓库设计会对数据分层,从贴源层会慢慢处理到汇总层 。而你报表直接使用汇总层,不存在多表关联的问题。正规完善的报表系统都是基于数据仓库的。
|
8
tkMerkava 2016-12-02 15:52:52 +08:00
如果是传统数据库,数据量大,查询复杂的话,就需要做数据仓库, OLAP 分析
如果是简单的查询,没有 BI 分析的要求,将来也不需要建 BI 平台的话,直接就分析了 当然,如果是内存数据库,那就更直接分析了 |
10
neetrorschach 2016-12-02 16:19:09 +08:00
把常用的统计指标存成物理表,定时重新计算数据。
|
11
yan159753li 2016-12-02 19:27:51 +08:00
你需要一个 BI 软件
|
12
devinww 2016-12-03 14:18:19 +08:00
我们公司的报表是做税务方面分析的,因为涉及的数据量很大(全省或者全市全年数据),所以实现实时比较困难,所以数据都是一层一层汇总出来的,最后的汇总表只有几十万条或者几万条几千条记录性能就 OK 了。
|