Mysql可以执行 mysql -uroot -p -hhost dbname -e "select * from mytab" > mytab.tsv
这样简单得到数据库查询的结果。无论表有多大,查询有多慢,Mysql 客户端也总会持续的把数据输出到本地。
感觉Mysql这个过程应该是流式处理,客户端和传输过程中都会保证内存占用稳定。
但是用 tidb 进行这样的大查询,会被 killed
, 文档也说查询不能超过一些内存设置的总大小。
mysql -uroot -h mytidbserver -p -P 4000 mydb -e 'set @@tidb_mem_quota_query = 8 << 30; select member_id destinct from orders;' > all_member_ids
Killed
似乎TiDB不能简单做到流式处理,对吗?
智能做脚本,where id > 123 / order by id / limit 1000 这样来循环分批处理?