Eri*_*ric 1 mysql sql perl cursor
我有一个拥有2.37亿行的MySQL表.我想处理所有这些行并使用新值更新它们.
我确实有顺序ID,所以我可以使用很多select语句:
where id = '1'
where id = '2'
Run Code Online (Sandbox Code Playgroud)
这是顺序运行一个包含1,000,000条记录的MYSQL表中提到的方法?.
但我想知道是否有更快的方法使用像游标这样的东西,用于顺序读取大文件而无需将整个集合加载到内存中.我看到它的方式,游标将比运行数百万个select语句快得多,以便以可管理的块恢复数据.
理想情况下,您可以让DBMS为您完成工作.您创建SQL语句,使其仅在数据库中运行,而不是将数据返回到应用程序.除此之外,这可以节省2.37亿条消息到客户端的开销和2.37亿条消息返回服务器.
这是否可行取决于更新的性质:
id改变任何值?如果id永远不会更改这些值,那么您可以安排将数据划分为可管理的子集,以便对"可管理"的任何灵活定义.
您可能需要考虑事务边界; 这一切都可以在一次交易中完成而不会破坏日志吗?如果您在子集中进行操作而不是单个原子事务,如果您的驱动过程在处理的1.97亿行崩溃,您会怎么做?或者DBMS在那时崩溃了?您如何知道在何处恢复操作以完成处理?
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |