时间:2021-05-24
本文实例讲述了MySQL切分查询用法。分享给大家供大家参考,具体如下:
对于大查询有时需要‘分而治之',将大查询切分为小查询: 每个查询功能完全一样,但只完成原来的一小部分,每次查询只返回一小部分结果集。
删除旧的数据就是一个很好地例子。定期清理旧数据时,如果一条sql涉及了大量的数据时,可能会一次性锁住多个表或行,耗费了大量的系统资源,却阻塞了其他很多小的但重要的查询。将一个大得DELETE语句切分为较小的查询时,可以尽量减少影响msql的性能,同时减少mysql复制造成的延迟。
例如,每个月会运行一次的语句,以清理三个月前的数据:
复制代码 代码如下:mysql> DELETE FROM messages WHERE dt<DATE_SUB(NOW(), INTERVAL 3 MONTH);
可以用以下的方法来完成这样的任务:
rows_affected = 0do { rows_affected = do_query("DELETE FROM messages WHERE dt<DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000")}while rows_affected>0一次删除一万行数据是个比较高效且对服务器影响较小的做法。同时如果每次删除数据时暂停一会,可以将服务器原本的一次性压力分散到一个较长的时间段中,从而减少删除时锁表锁行的时间。
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
希望本文所述对大家MySQL数据库计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
场景说明假设有一个mysql表被水平切分,分散到多个host中,每个host拥有n个切分表。如果需要并发去访问这些表,快速得到查询结果,应该怎么做呢?这里提供一
本文实例讲述了mysql多个leftjoin连接查询用法。分享给大家供大家参考,具体如下:mysql查询时需要连接多个表时,比如查询订单的商品表,需要查询商品的
本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下:本文内容:连接查询联合查询子查询from子查询where子查询ex
PHP查询MySQL大量数据的内存占用分析这篇文章主要是从原理,手册和源码分析在PHP中查询MySQL返回大量结果时,内存占用的问题,同时对使用MySQLCAP
本文实例讲述了mysql_escape_string()函数用法。分享给大家供大家参考,具体如下:使用mysql_escape_string()对查询中有疑问的