文章

群站管理工具性能优化(2)

钱真是好东西,直接说要不是因为有客户花了几万续费提了点要求还真没劲动,这次优化主要也是因为现在这个软件系统之前的架构不太支撑的起现在的速度,现在服务器资源/算力这些也算是足够了,这几天快一个礼拜了着重去优化了下软件的一些相关性能。
有的客户电脑配置有点低,但数据库有点大,有的关键词裤有七八个G,光一个数据库的关键词就有一亿多条数据,按照之前的软件架构跑起来非常慢。。甚至启动都有点卡顿。
这几天主要是对数据库的优化,软件内置的是轻量型的sqlite数据库,几年前开发的时候没考虑过说有用户会有这么大量的数据库,sqlit本身就是个轻型数据库,SQLite 对于同时进行写操作的线程会有一定的限制。SQLite 使用了一个写锁来保护数据库的一致性,因此只有一个线程可以执行写操作,其他线程必须等待。这意味着在多线程写操作的情况下,可能会出现性能瓶颈  直接点就是多线程写入会出现database is locked的问题,非常影响性能。
试过的操作是 信号量控制/锁控制,其实都不理想。这几天单独写程序去测试了sqlite的删除数据/插入数据/更新数据/,发现单项操作的时候速度非常快,写入数据几秒内能写入一万多条,那问题肯定就出在代码上了,之前百度谷歌也搜过非常多的资料。。
软件由于是一个综合性操作的,整个软件运行起来可能同时存在读取数据/删除数据/插入数据的操作,所以问题就出在这里了。办法简单 定义一个全局字典来管理操作---然后统一分配线程去执行。。。完美解决。
本文由作者按照 CC BY 4.0 进行授权

热门标签