如果以前曾经问过这个问题,我很抱歉,但我似乎无法找到一个关于我在飞行中计算与存储数据库中存储字段的问题的答案.
我读了一些文章,建议最好尽可能计算,但我想知道这是否仍然适用于以下2个例子.
示例1.假设您正在存储与汽车相关的数据.您将油箱尺寸以升为单位存储,以及每100公里使用多少升油箱.您还想知道它可以行驶多少KM,这可以根据油箱尺寸和经济性来计算.我看到了两种方法:
由于汽车经济性/坦克尺寸不会改变(尽管可以编辑),因此KM是一个非常静态的价值.我不明白为什么我们会在每次访问汽车时计算它.这不会浪费cpu时间而不是简单地将其存储在数据库中的单独字段中,并且仅在添加或更新汽车时计算?
我的下一个例子,几乎是一个完全不同的问题(但在同一主题上),与计算儿童有关.
假设我们有一个包含类别和项目的应用程序.我们有一个视图,我们显示所有类别,以及每个类别中所有项目的计数.再一次,我想知道什么更好.要在每次访问页面时执行MySQL查询来计算每个类别中的所有项目?或者将计数存储在类别表的字段中,并在添加/删除项目时更新?
我知道存储任何可以计算的东西都是多余的,但是我担心计算字段或计数记录可能会比在字段中存储数据要慢.如果不是那么请告诉我,我只想了解何时使用这两种方法.在一个小规模上,我想这无关紧要,但像Facebook这样的应用程序,他们真的会计算每次有人查看你的个人资料时你拥有的朋友数量,还是只将它存储为一个字段?
我很感激对这两种情况的任何回应,以及可能解释计算与存储的好处的任何资源.
提前致谢,
基督教
我认为这是最新Chrome(21.0.1180.57)中的一个错误,但我想我会在这里发帖只是为了仔细检查.
我正在使用javascript更改元素的旋转,并使用webkit过渡来为旋转设置动画.有时,根据开始和结束旋转,元素随着旋转随机缩放.我在这里做了一个演示:http://jsfiddle.net/XCwUQ/(点击正文).
有谁知道为什么会发生这种情况?
干杯,
基督教
我有一个SVG对象,其中包含直接嵌入文档中的线性渐变.它在Chrome和Firefox中运行良好,但在Safari中无法呈现.如果我将SVG创建为文件并使用Object标签嵌入它,它在Safari中可以正常工作.其他形状和填充工作,它只是线性渐变不起作用.我想我可以使用该对象,但我更喜欢直接嵌入SVG.
我在这里创建了一个演示(在Chrome中运行,而不是Safari):http://jsfiddle.net/sjKbN/
我发现这个答案建议将内容类型设置为application/xhtml+xml,但这本身似乎会导致其他问题.
只是想知道是否有人遇到任何其他修复或想法让这个工作.
我为我的客户管理一个rails应用程序,最近它崩溃了.在我发现之前,该网站已经停机了9个小时.我检查了日志,过去9小时的每个请求都附加了以下代码:
at=error code=H10 desc="App crashed"
Run Code Online (Sandbox Code Playgroud)
在此之前,我看到以下日志:
2012-11-16T00:55:46+00:00 heroku[web.1]: Idling
2012-11-16T00:55:50+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2012-11-16T00:55:51+00:00 app[web.1]: [2012-11-16 00:55:51] ERROR SignalException: SIGTERM
2012-11-16T00:55:51+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/server.rb:90:in `select'
2012-11-16T00:56:00+00:00 heroku[web.1]: Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM
2012-11-16T00:56:00+00:00 heroku[web.1]: Stopping remaining processes with SIGKILL
2012-11-16T00:56:02+00:00 heroku[web.1]: State changed from up to down
2012-11-16T00:56:02+00:00 heroku[web.1]: Process exited with status 137
2012-11-16T01:03:55+00:00 heroku[web.1]: Unidling
2012-11-16T01:03:55+00:00 heroku[web.1]: State changed from down to starting
2012-11-16T01:03:59+00:00 …Run Code Online (Sandbox Code Playgroud) 我有一个属于类别的条目模型。类别模型使用祖先,以便我可以嵌套类别。
我想按其根类别对所选条目进行分组。我遇到的问题是,为了做到这一点,rails 对每个条目执行查询以获取根类别。因此,如果我有 20 条记录,它将执行 20 个查询以按根类别分组。
我已经通过预先加载类别(如下所示)减少了查询数量,但我不知道如何预先加载类别的根。
这是我正在使用的代码:
控制器
@entries = current_user.entries.includes(:category)
@entries_by_category = @entries.group_by { |entry| entry.category.root }
Run Code Online (Sandbox Code Playgroud)
入口.rb
class Entry < ActiveRecord::Base
belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)
类别.rb
class Category < ActiveRecord::Base
has_ancestry
has_many :entries
end
Run Code Online (Sandbox Code Playgroud)
我试图把默认范围的分类模型,像这样:default_scope { includes(:ancestry) }。但这并没有改变执行查询的数量。而且我无法弄清楚如何includes()在原始查询上使用以包含类别和类别的根。
作为一些额外的信息,类别只能嵌套 2 层深(仅类别和子类别)。所以 root 在技术上意味着父级,它不必遍历多个级别。
有任何想法吗?
我在Codeigniter中构建了一个网络应用程序,该应用程序已经运行了大约一年,并且突然之间应用程序在一天中的某些时间变得极其缓慢.(有时页面加载时间超过30秒).我开始记录,结果发现一些查询运行速度极慢:
9.6776 SELECT * FROM (`ci_sessions`) WHERE `session_id` = 'f2f356fb32a4e65ad3eb18f5baa74cfb' AND `user_agent` = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11'
28.9770 UPDATE `ci_sessions` SET `last_activity` = '1335753561', `user_data` = 'a:7:{s:6:\"userID\";s:1:\"3\";s:12:\"userFullName\";s:15:\"Christian Varga\";s:5:\"admin\";s:1:\"1\";s:7:\"timeout\";s:5:\"86400\";s:12:\"lastActivity\";s:10:\"1335928202\";s:8:\"prev_url\";s:58:\"http://exampleurl.com\";s:8:\"loggedIn\";s:1:\"1\";}' WHERE `session_id` = 'f2f356fb32a4e65ad3eb18f5baa74cfb'
Run Code Online (Sandbox Code Playgroud)
我的想法是数据库服务器存在问题,因为有时这些完全相同的查询工作正常,然后在一天中的其他时间它们的速度非常慢(如上所述).但是我很快就指出了这一点,所以我只是想在这里查看是否有人认为它可能是代码有问题,或者它看起来像服务器问题.
我对此有任何想法.
编辑:解释结果选择:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ci_sessions const PRIMARY,user_agent PRIMARY 122 const 1
Run Code Online (Sandbox Code Playgroud) 好的,所以我似乎无法弄清楚我的代码有什么问题.
<html>
<head>
<title></title>
</head>
<h1>This is a heading</h1>
<h2>This is a heading</h2>
<h3>This is a heading</h>
</html>
Run Code Online (Sandbox Code Playgroud)