如何处理一张大桌子 MySQL?
我有一个用于存储这些元素的项目和属性的数据库。 属性的数量正在扩展,因此有一个组合表来存储与元素的值相关联的每个属性。
此数据库有两种目标:存储 /这是第一个优先级,应该非常快,我想履行很多插入物 /数百/ 几秒钟/, 提取数据 /选择帮助 item_id 和 property_id/ /这是第二个优先级,它可能会慢,但不是太多,因为它会破坏我的用途 DB/.
目前,此表包含 1.6 数十亿的记录,并且简单的计数可能会占用 2 分钟...插入不足以使用它。
我用 Zend_Db 为了访问您的数据,如果您,我会非常高兴
不是
让我开发任何一方元素 PHP.
CREATE TABLE `item_property` /
`property_id` int/11/ NOT NULL,
`item_id` int/11/ NOT NULL,
`value` double NOT NULL,
PRIMARY KEY /`property_id`,`item_id`/,
KEY `item_id` /`item_id`/
/ ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
此数据库有两种目标:存储 /这是第一个优先级,应该非常快,我想履行很多插入物 /数百/ 几秒钟/, 提取数据 /选择帮助 item_id 和 property_id/ /这是第二个优先级,它可能会慢,但不是太多,因为它会破坏我的用途 DB/.
目前,此表包含 1.6 数十亿的记录,并且简单的计数可能会占用 2 分钟...插入不足以使用它。
我用 Zend_Db 为了访问您的数据,如果您,我会非常高兴
不是
让我开发任何一方元素 PHP.
没有找到相关结果
已邀请:
7 个回复
风见雨下
赞同来自:
根本
提高您的生产力 /当然,他们与集群合作/:
设置存储机制 MyISAM
使用 "LOAD DATA INFILE filename INTO TABLE tablename"
将数据划分为多个表格。
就这样。 读 rest 只有您对细节感兴趣 :/
你还读了吗? OK 那就是什么:Myisam是基石,因为这是今天最快的发动机。 而不是使用常规运算符插入数据线 SQL, 您必须将它们包装到文件中
http://dev.mysql.com/doc/refma ... .html
定期间隔 /正如您需要的那样,但很少,因为您的应用程序允许/. 因此,您可以每分钟插入大约一百万行。
下一件事限制了你 - 是你的 keys/indexes., 当他们不适合你的记忆 /因为他们太大了/, 您将体验到刀片和请求的巨大减速。 这就是为什么将数据分为多个表,所有这些都具有相同的方案。 每个表必须尽可能多,而无需在一次加载一个时填充内存。 准确的尺寸取决于您的汽车和指数,当然,但应该在某个地方 5 和 50 百万 rows/table. 如果只是衡量插入另一个巨大线路所需的时间,请在逐步缩短时刻,衡量它的时间。 当您了解限制时,每次上一张表接近此限制时都会在飞行中创建一个新表。
随后的解决方案 multitable 是,您必须要求您的所有表格,而不仅仅是一个需要减慢您的请求的数据 /但如果你有十亿左右的线路,那就不是太多了/. 显然,这里还有几种优化。 如果您可以用于数据分离的根本性 /例如,日期,客户或其他东西/, 您可以使用结构化模板将它们分成不同的表,该模板允许您知道某些类型的数据所在的位置,甚至不是询问表。 仅针对可能包含所请求数据等的查询表使用这些知识。
如果你需要一个大的设置 , 切换到
http://dev.mysql.com/doc/refma ... .html
, Eineki和Oeota如何提供它。
另外,你知道这一切都不是野生物种:目前我在自己的数据上花了这种可扩展性的测试,这种方法为我们创造了奇迹。 我们设法每天插入数百万条线路,请求占用 ~100 小姐。
江南孤鹜
赞同来自:
所以使用 MyISAM, 它已经有了一些意义。
然后,如果它仍然不够快,请进行分度,但您已经需要看到激进的差异。
风见雨下
赞同来自:
如果需要快速存储存储,则可以使用一个运算符包装插入并插入它们 multiple INSERT. 但是,这绝对需要额外的客户端代码。 /php/, 对不起!
还可以断开所有索引 NEED, 由于索引减慢了INSERT命令的执行。
或者,您可以查看表的分区:
http://dev.mysql.com/doc/refma ... .html
詹大官人
赞同来自:
莫问
赞同来自:
关于性能的几件事:
如果您不需要检查参考完整性,这不太可能,则可以切换到存储机制 MyISAM. 它有点速度,但没有足够的完整性 ckecks 和交易。
对于其他东西,需要更多信息。
董宝中
赞同来自:
http://dev.mysql.com/doc/refma ... .html
部分上的表格?
涵秋
赞同来自:
http://www.ibm.com/developerwo ... .html
为了你的工作量。