不经意间实习了一个多月了,也渐渐习惯了工作的节奏。前段时间老大给了个任务,没想到做了20多天了才算做完,自觉得工作的效率还是太低了。做完这个任务后,觉得有很多值得记录的东西,会整理成几篇博客,供大家分享。
这个任务只不过是做一个web平台上的一些数据查询工作,本来是一件很简单的活,事实上接到任务后三四天我就交出了一个版本。事实上出去一些页面上需要改动外,最根本的一个问题就是数据库中的数据太大,上千万条的数据,在执行sql的时候速度相当慢。在web连接的过程中容易超时断掉链接。且数据库并非属于我们部门,我们提出加索引却没有得到允许。这个问题困扰了我一段时间,最后才决定将数据库中的数据进行过滤并迁出到我们这个web平台的数据库下,这样数据的大大减少,且过滤掉的基本都是一些无用的数据,对结果造成的影响不大。于是我便开始了用python来编写脚本。
脚本编码的时间不多,大约花了两天就编码完成。然而最痛苦的是测试了。由于sql查询速度慢,每次测试的时间都很长,导致进度很慢。测试的过程我就省略了,下面说说我在编写和测试这个脚本的过程中遇到的一些问题或注意点和我解决的方法吧。
1、其实这也不算问题。在执行insert语句的时候,我们往往是一次执行就插入一行数据。然而在数据量大的时候,多次执行sql的性能比起只执行一条sql的性能要差几个数量级。所以,在参考了如何优化MYSQL insert性能一文后,将代码中的insert语句全拼接成一句来执行,性能果然提升。
2、这是个注意点。在最开始写这个脚本的时候,在测试执行query时