- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下表包含1000万行,
CREATE TABLE Sample1 (
c1 bigint(20) NOT NULL AUTO_INCREMENT,
c2 varchar(45) NOT NULL,
c3 tinyint(4) NOT NULL DEFAULT 0,
c4 tinyint(4) NOT NULL DEFAULT 0,
c5 varchar(45) DEFAULT NULL,
time bigint(20) DEFAULT NULL,
PRIMARY KEY (c1),
KEY varchar_time_idx (c2,Time),
KEY varchar_c3_time_idx (c2,c3,Time),
KEY varchar_c4_time_idx (c2,c4,Time),
KEY varchar_c3_c4_time_idx (c2,c3, c4,Time)
) ENGINE=InnoDB AUTO_INCREMENT=10093495 DEFAULT CHARSET=utf8;
最佳答案
注意:TMI即将到来。我不得不做一些猜测;如果您提供更多详细信息,我会更具体...
您拥有的4个辅助键最适合您列出的4个查询。
与流行的妻子的故事相反,基数与复合索引和SELECT
性能无关。
在1亿行的情况下,表(包括索引)可能为20GB。你有多少RAM? innodb_buffer_pool_size
的值是什么?除非您有一个很小的RAM,否则这些可能无关紧要。
回到“基数”。
让我们看一下INDEX(c2, Time)
,其中c2
有100个不同的值,而Time
基本上在不断增加。每个新的INSERT
会将新行置于100个位置之一-每个c2簇的末端。这意味着有100个“热点”,并且意味着有100个块(大部分)足以应付更新这一索引的需要。 100个块= buffer_pool的1.6MB-希望是很小的一部分。
同时,PRIMARY KEY
是AUTO_INCREMENT
,因此存在一个热点和一个块-甚至更小部分。
但是...其他三个辅助键将具有更多热点(块),因此它们可能更重要。让我们来看最糟糕的一个(c2, c3, c4, Time)
。暂时,将有100 * 100 * 100个热点。但是我认为这将超出整个索引中的块数。 (因此,数学崩溃了。)所以这会很忙。
题外话……您在一次交易中INSERT
多少行?每秒多少行? innodb_flush_log_at_trx_commit
(flatc)的值是什么?好吧,我们将其简化为一次完全刷新一行,而不是批量刷新很多行。
回到计算...
在一个极端情况下:小型buffer_pool和单行事务以及flatc = 1和HDD:您将需要一些IOP。希望您插入的行数不必超过20行/秒。
在另一个极端:大型缓冲池和批处理,以及flatc = 2和SSD:平均少于1个IOP。您可能可以处理每秒插入的1000行以上。
规范化c2
可能会减少20GB估计值的一半,从而在计算中进行多次调整。
回到SELECTs
-您是否真的为给定的c2
获取10万行?如果您还有更多过滤条件,例如ORDERing
,LIMITing
等,请向他们展示;在此分析中可能会有很大的不同。
回到标题-我还没有看到任何有用的方式来更改/最小化这些索引。它们对于SELECTs
似乎非常有用,并且对INSERTs
的危害很小。
哦,UPDATEs
。在考虑此处的后果之前,我们需要先查看WHERE
上的UPDATEs
子句。
更多(对问题进行多次更新后)PRIMARY KEY(c1)
负责使UPDATEs
尽可能快(除了需要最终更新索引外)。SELECTs
非常少见;我的索引使每次运行都尽可能快
15GB的Buffer_pool表示,整个表及其所有索引都将存在于池中(一旦对其进行预热)-对于当前的10M行。在100M行时,可能仍然可以。我之所以这样说,是因为可能会引起用户流失的查询是SELECTs
,但是它们都说AND Time > ...
。这意味着“工作集”即表的“结尾”。如果到达十亿行,则需要重新讨论此段。
即使使用最差的设置,MySQL每天也应该能够处理一百万个INSERTs
。因此,如果您不希望3个月内就能获得1亿行,那么我认为INSERTs
没问题。
关于mysql - Mysql Innodb性能-如何最小化多列索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43952816/
我有一个关于 DFA 最小化的问题。所以我使用了众所周知的技术将正则表达式转换为 NFA,然后使用 goto/closure 算法从中构造 DFA。现在的问题是如何将其最小化?我在这里看过有关它的课文
这是我的代码,当鼠标光标悬停在 TPanel 上时,它会“动画化”它。我还有一个代码块来取消它的动画。 procedure Tmain.pStarting1MouseEnter(Sender: TOb
我有图像 slider ,其中图像在超时时相互替换。我使用 jQuery 函数 setInterval() 但有一个小问题,在最小化浏览器窗口后,该函数继续“工作”,并且我恢复浏览器窗口图像的位置以令
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How can I stop a double click of the window title bar
当我在我的 Windows 窗体应用程序中单击最小化按钮时,我不希望它执行经典的 Windows 最小化动画(窗口下降到任务栏)。 据我所知,没有最小化事件,我只能使用调整大小,但我不知道如何检测我是
首先 - 对不起我的英语。 我刚刚创建了 Android 应用程序。它包含几个 Activity ,并在此应用程序的背景下播放音乐。当用户以某种方式(通过单击“后退”按钮、主页按钮或其他方式)离开应用
我需要帮助编写一个程序,该程序以 (X,Y) 的形式给出指定数量的坐标点。将给出的点数是程序中的第一行;它可以通过扫描仪读取。 我需要计算覆盖线 x = a 和 y = b 的所有点的最小面积。因此,
我需要一个 Activity 返回到上一个 Activity ,但如果再次单击该按钮,它将恢复上次的 Activity 。这是所需的过程:我点击一个按钮, Activity 开始。如果我点击“后退”按
随着这个动画变得越来越复杂,我不断添加参数,以便它们在每次回调时可用。目前共有 6 个。 例如,现在我想在显示消息时禁用输入框,因此我必须添加另一个元素 - in_element; 电话: M
这是一个基于对话框的 MFC 应用程序。我并没有故意添加任何关于最小化、最大化和恢复按钮的代码。它可以首先显示那些按钮。但它在长时间运行后就会消失。或者计算机的 sleep 可能导致此问题? 我不知道
如何使用 Windows API 禁用窗口的最大化和/或最小化功能?最大化/最小化框需要变灰并禁用,双击标题栏、拖动到屏幕顶部等也需要不起作用。 最佳答案 您可以调用 SetWindowLong/Se
是否有任何已知的算法帽子可以解决以下问题:我们有一个 session ,有多个同时会谈。用户应标记感兴趣的会谈,然后我们要创建一个会谈时间表,以便我的大多数人都可以参加他们的会谈并最大限度地减少日程冲
目前我负责为一个小项目开发一个(C++)窗口类;目标是将依赖性保持在最低限度。Win32/WinAPI 的实现按预期工作,但是,当涉及到 Linux/XCB 时,我正在努力。 我知道,我可以检查“_N
windows C++编程,如何让事件窗口最大化或最小化? 对于鼠标按下事件,我们使用类似 mi.dwFlags = MOUSEEVENTF_LEFTDOWN 的东西,并使用 SendInput()
我编写了以下获取 2 个参数的构造函数,如果值(x 或 y)为负,它将被初始化为零。 public Point1 ( int x , int y ) { //if one or
我有以下代码,如果我将导航窗口最大化,它运行良好,但是当我最小化它时它停止工作。 更多细节: 当窗口最小化时,“scrollDown & scrollTop”函数停止执行。 'use strict'
我有一个包含一些宏和用户表单的 Excel 文件。 我不希望用户在没有密码的情况下访问文件本身。他们应该只能看到用户表单并通过用户表单输入数据。 这是我目前拥有的代码。 Private Sub Wor
目前,我正在尝试训练一个同时具有复值张量作为输入和输出的网络。作为损失函数,我采用输出与真实值之间逐点差异的范数。 当我尝试最小化损失函数时,tensorflow 的“最小化”函数提示意外的复数。我觉
这个函数是我想要优化的主力。任何关于如何限制其内存使用的想法都会很棒。 function F(len, rNo, n, ratio = 0.5) s = zeros(len); m = co
在 Qt 下的 Windows Mobile 和 Symbian 平台上,如何通过单击应用程序中的某个按钮来最小化我的应用程序? 最佳答案 大概QWidget::setWindowState将适合您,
我是一名优秀的程序员,十分优秀!