重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先应该确定是谁慢的,往往是程序处理方面的问题而不是数据库的问题。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的华宁网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
程序方面应该尽可能的减少数据查询返回的内容,减少IO压力,磁盘IO和网络IO是非常非常慢的。比如可以查询返回ID,然后再根据ID一条一条的查询具体内容,看似慢了,在数据量大的时候快很多
对于数据可以参照下面几点
1、优化SQL语句,SQL语句对查询速度影响最大的
2、对于经常查询的字段作索引。但是这样会增加修改时的压力
4、优化SQLServer,比如给其分配固定的内存,预先分配查询内存,调整CPU使用率等。SQL Server 可以占用几乎所有Windows的内存,但是申请内存开销很大。因此可以设定其使用固定大小内存,比如启动就分配1G以上内存。
5、优化硬件资源,比如使用更高的服务器或者硬盘,独立安排数据库的数据文件和索引文件,将数据文件分布于不同的物理硬盘上等等
6、考虑使用分布数据库或者对大表进行拆分
慢的三个原因,IOPS,CPU,内存,锁。
数据库默认是占满内存做缓存的,如果你有2个不同的数据库,内存不分配好,就出现争用内存的情况。
CPU一般建议80%左右,索引、大逻辑查询,count等统计信息都是走CPU,CPU高肯定慢。
IOPS,就是写入速度,如果经常批量写数据,批量查数据,或者直接全部数据读取后给前端处理,IOPS不足就会影响数据吞吐形成等待。
锁,也就是事务,大量事务会出现枪锁情况,这个情况也会等待,甚至死锁。
做两手准备,把东西备份,指不定那天系统崩了,你找都找不回来的,系统崩掉是毁硬件的。 小心把。具体的解决办法,我也没有。。当然.最好的就是换一个机器.不过2000就可以攒一个好的,硬盘可以使用原来的.一般这种情况与机器配置有关.
数据库的结构很重要,表的建立,对需要用到的字段进行建立索引:尽量单表查询。
CREATE INDEX index_name ON table_name (column_name);
多字段查询,建立索引:
CREATE INDEX index_name ON table_name (column_name1,column_name2);
唯一索引:
CREATE UNIQUE INDEX index_name ON table_name (column_name);
你在服务器上直接查询,只是读取一次数据到内存中。
你现在的代码,首先要从数据库读出,然后要写入df,df可以看做一个内存数据库,写入需要做一些相关的处理,例如索引之类的。
然后又要从df读出,再写入excel,这个步骤是写入磁盘,也是花费时间最多的。
没有用到索引或者就是内存小了,因为没有备份运行时有的sql丢失了。
看看数据库内存设置是否比较小,数据库表是否建立合理的索引。
因为主机长期在工作.数据会一上在增多..对于内存还有CPU来说不是所有数据都可以一次性的完全处理好。就会有一些"尾数"包括记录,然而越来越多,会让主机运行速度变慢。如果用好点的专用的服务器硬盘,内存会让主机更长时间的不用重启。所以SQL还是要用高一点的配置。