MYSQL数据库 LIMIT限定特定行数

时间:2022-09-23 09:57:01

最近在运行Informatica全量抽取时候,系统报了很多莫名的错误,日志也没有显示警告信息。按有限的日志信息查询,可能的原因一般是磁盘空间不够,内存不够,或者是数据量量太大,缓存爆了。

经排查,是加载的数据量过大,导致了数据加载的失败。

只好通过限制每次的加载数量,分批多次进行跑数据了。

业务系统使用的是Mysql数据库,因此在ODS层抽数时候,使用LIMIT语句限制数量。

LIMIT后面可以跟一个或者两个整数常量,如果跟两个整数的话,第一个整数用于指定第一个返回结果的偏移量,第二整数用于指定返回结果的条目数。但值得注意的是第一个结果的偏移量是0(而不是1),所以如果您只关心结果的第一个,那么可用如下语句实现。

select * from table limit 0,1;  

如果LIMIT只跟着一个整数n的话,表示只搜索前n个记录。所以limit n 等价于 limit 0,n。

如果是两个整数,类推。

select * from table limit 7,-1; //搜索记录行 8到最后一行  
select * from table limit 7; //搜索前7行记录  
select * from table limit 0,7; //跟上一条命令等价,搜索前7行记录

因此最后决定通过用Bluk方式,一次加载500w

select * from table limit 0,5000000; //搜索记录行 1-5000000
select * from table limit 5000000,10000000; //搜索记录行 5000001-10000000
......