接上篇.
那么在Server端Cursor是如何实现的呢?
Cursor在MySQL-Server side是以内部临时表的形式存在的,将resultSet存储到Memory table或者MyISAM Table内(当resultset>max_heap_table_size ,tmp_table_size时或者memory不支持的字段类型时),因此第一就是临时表是无法控制的,即没办法添加索引等,因此对于大结果集来说获取行可能会比较慢,第二就是当高并发时可能造成MySQL Server Swap或者crash.
另外,对于Streaming mode:MySQL在进行streaming read的时候不能用该连接发出其他命令,否则会报异常,同时需要客户端处理的够快,因为在读取的过程中会读表进行锁定,因此此过程中不可写的.
看来使用cursor read还需谨慎..
转载于:https://blog.51cto.com/boylook/1308522