OLAP 的 12 条规则
Edgar F. Codd于1985年撰写了一篇论文,定义了关系数据库管理系统(RDBMS)的规则,这些规则彻底改变了IT行业。 1993年,Codd及其同事研究了以下 12 条规则,用于定义OLAP(在线分析处理)。这是一个可以在多维空间中整合和分析数据的行业。
Edgar F. Codd于1985年撰写了一篇论文,定义了关系数据库管理系统(RDBMS)的规则,这些规则彻底改变了IT行业。 1993年,Codd及其同事研究了以下 12 条规则,用于定义OLAP(在线分析处理)。这是一个可以在多维空间中整合和分析数据的行业。
MySQL 使用新建用户查询时,如果数据库中有 view,可能会出现这样的错误:
1 | SQLSTATE[28000]: Invalid authorization specification: 1045 Access denied for user 'user'@'10.174.68.21' (using password: YES) |
或者
1 | SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('db_prod'@'%') does not exist |
其表现是:
大多数情况下,出现此问题的根源是view definer设置不当。
有这样一类问题:
检索论坛中某一版块所有主题的最新一条帖子
查找所有会话中最新一条消息
查找一类商品的最新报价
这类问题的共同点是:需要按某个字段分组,且每组只能取一条记录;按某个字段倒序。
最近开发会员中心项目,遇到多表查询的问题,发现响应极慢,就动手查下原因,并进行一些优化。先说下成果吧,由6-7秒降到200ms以下。
吃公鸡下的蛋之前,走道是这样的:
图1
吃完了之后,那家伙,再看,就成了这样:
图2
降到还可以接受的范围了。
MySQL执行一个SQL语句时,执行时间精确到秒。如下:
mysql> select * from test
+----+-------+
| id | name |
+----+-------+
| 1 | david |
+----+-------+
1 row in set (0.00 sec)
如何精确到毫秒呢?MySQL有个内置语句(show profile)可以查看执行耗时。