- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个超过 18GB 数据的 9000 万条记录的 MYISAM 表,测试表明它是分区的候选者。
原始架构:
CREATE TABLE `email_tracker` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hash` varchar(65) COLLATE utf8_unicode_ci NOT NULL,
`userId` int(11) NOT NULL,
`dateSent` datetime NOT NULL,
`dateViewed` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userId` (`userId`),
KEY `dateSent` (`dateSent`),
KEY `dateViewed` (`dateViewed`),
KEY `hash` (`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 1 row in set (0.01 sec)
我之前在测试服务器上使用“ALTER TABLE email_tracker PARTITION BY HASH...”对表进行了分区,并对它运行了典型的查询,查询没有出现任何问题。为了避免在生产数据库上锁定表,我使用这种方法在测试服务器上再次测试,因为我们可以承受在运行时丢失一些跟踪数据:
RENAME TABLE email_tracker TO email_tracker_orig; CREATE TABLE email_tracker LIKE email_tracker_orig;
CREATE TABLE email_tracker_part LIKE email_tracker_orig;
ALTER TABLE email_tracker_part DROP PRIMARY KEY, ADD PRIMARY KEY (id, userId);
ALTER TABLE email_tracker_part PARTITION BY HASH (id + userId) partitions 30;
INSERT INTO email_tracker_part (SELECT * FROM email_tracker_orig);
_orig 表有 90,795,103 条记录。查询后,_part表只有68,282,298。我不知道为什么会这样。有什么想法吗?
mysql> select count(*) from email_tracker_orig;
+----------+
| count(*) |
+----------+
| 90795103 |
+----------+
1 row in set (0.00 sec)
mysql> select count(*) from email_tracker_part;
+----------+
| count(*) |
+----------+
| 68274818 |
+----------+
1 row in set (0.00 sec)
(在后续测试中,_part 表包含的记录数量略有不同,这更奇怪)
编辑 #1:刚刚意识到由于复制的自动增量增量 = 2,分区表的一半是空的,所以要按 KEY (userId) 重新分区,看看结果如何。
编辑 #2 - 重新分区后仍然相同,因此尝试识别丢失的行以建立模式。
最佳答案
我不确定你的要求,但是 mysql documentation声明“不特别推荐使用涉及多列的散列表达式”。我建议您只按 id
进行分区。按 id + userId
进行分区不会明显改善元素在分区之间的分布。
关于mysql - "Lost"分区后30%的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35545610/
我只是设法与 svn 陷入了一个奇怪的境地。就工作副本而言,我的一个文件似乎“丢失”了。当我查看服务器或在另一个位置重新 check out 包含文件夹时,文件在那里,但在这个特定的工作副本中,它似乎
我使用的是 Delphi 2007。有时链接到组件的属性会丢失。这通常是操作属性和查找数据集。我有几次进行了一些紧急错误修复并向客户发送了一个版本,因此产生了一些灾难性的结果:-)任何人都知道一种方法
我已经安装了 RabbitMQ Bundle。现在这是我想要做的: Controller :创建Redis-List,将消息推送到客户端,然后将消息发送到队列中,因此可以异步执行较重的后台任务。 但我
我在文件中有一个矩阵,例如: 3 1 2 3 4 5 6 7 8 -9 其中第一行表示方阵阶数。我正在使用以下代码读取文件并将其存储到 vector 中(为了简单起见,我删除了所有 if 检查): #
说 Pokemon 是一个类。考虑这个片段: Pokemon Eve(4,3); //call to constructor, creating first object on the stack E
这真的很奇怪。我正在使用 SQL Server Express 2005,并具有以下连接字符串(在 DotNetNuke web.config 中): Data Source=ELECTROMORPH
我有一个包含两个项目的 C# 解决方案:一个服务(主项目)和一个记录器。该服务使用来自记录器的类。我在服务项目中添加了对记录器项目的引用。在设计时,自动完成工作正常:记录器的类是可见的,我使用的引用有
我最近将valgrind与glib(与gobject)一起使用,效果不是很好。 我在命令行中添加了G_SLICE=always-malloc G_DEBUG=gc-friendly, 但是valgri
从 Delphi 2010 升级后,我丢失了 Delphi XE 中的大部分库路径, 现在,即使是一些简单的应用程序也将无法编译。 有什么方法可以恢复库路径中丢失的目录条目吗? 编辑:我发现了一个令人
我最终使用 Eng. 的方法在 JFileChooser 的 JList 和 JComboBoxes 中自定义了选择颜色。福阿德建议here public void customizeJFileCho
我尝试使用返回字符串的 StreamReader 类的 ReadToEnd() 方法读取 JPG 文件。 但出于某种原因,当我将此字符串写入文件时,它无法打开。 将数据读入字符串时是否丢失了什么? 最
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
基本上,我的问题是:是否有某种方法可以“恢复”因向上转换为非泛型基类型而丢失的类型参数,例如 Object .这是我的意思的一个例子: 假设我收到了一个 Object l来自图书馆,我知道 l是一个
我无法让 UIView 通过多次触摸来响应我想要的方式。基本上某些 UITouches 在 UITouchPhaseBegan 中,但永远不会进入 UITouchPhaseEnded 或 UITouc
我面临一个设计问题,我希望只有一个 JMS 生产者向两个消费者发送消息。只有两台服务器,生产者将开始生成消息,这些消息将对两个消费者进行负载平衡(通过循环)。 在假设一台服务器发生故障的情况下,我确实
我正在尝试创建一些程序以便正确地为测试做好准备,这很快就会完成。但实际上,经过几天对这些代码的研究,我无法找到 valgrind 报告的内存泄漏的实际位置。 我尝试释放几乎所有内部和外部指针。我尝
我想使用 Requests 包连接到 Web 服务的流 API。假设我使用以下代码发送请求、接收响应并在响应行到达时对其进行迭代: import requests r = requests.get('
我有一个类,它被另一个类的方法动态扩展。这些方法中还有一些额外的静态信息,例如。例如: class A # @b = B.new # in initialize def a puts
我想对一个变量进行位移并将移出的位存储在 bool 值中。 类似于: unsigned int i = 1; bool b = rshift(&i); // i now equals 0 and b
我有一个超过 18GB 数据的 9000 万条记录的 MYISAM 表,测试表明它是分区的候选者。 原始架构: CREATE TABLE `email_tracker` ( `id` int(11
我是一名优秀的程序员,十分优秀!