如何提高数据库性能,减少数据库服务器压力瓶颈一两个小方法

如何提高数据库性能,减少数据库服务器压力瓶颈一两个小方法,第1张

树立的观念:一个SQL语句,如果在压力测试时CPU占有率达到100%,此语句肯定存在问题。 在大多数程序员的心里,一直认为数据库索引,在查询中使用索引,就可以提高数据库性能。其实这种观点有一点的局限性,如果不好好的利用已经建立好的数据库索引,有时反

树立的观念:一个SQL语句,如果在压力测试时CPU占有率达到100%,此语句肯定存在问题。

在大多数程序员的心里,一直认为数据库加索引,在查询中使用索引,就可以提高数据库性能。其实这种观点有一点的局限性,如果不好好的利用已经建立好的数据库索引,有时反倒给数据库增加更大的处理压力。现在我们举例说明一下:

在现有的个人信息管理系统登录处的查询中,有这么一个SQL语句:

Select StudentInfoID, StudentNumber, StudentName,UnifyExamInfoID,NetSchoolID from StudentInfo

where StudentCrtificateNumber ='130425831217494' and rtrim(ltrim(StudentNumber)) = 'D0462382001'

此SQL语句的目的是查找这个考生是否存在,验证登录的效果,就是这么一个简单的SQL语句,在压力测试时,10个用户同时登录,就会造成数据库服务器

(2CPU,4G内存,IBM专用服务器)CPU占有率达到100%。而这张表也建立了StudentCrtificateNumber 和

StudentNumber 两个字段的索引, 问题出在哪呢?原因如下:

(1)在studentinfo表中,建立了一个索引LX_STUDENTINFO,包括了四个字段,顺序为:studycenternumber,studentnumber,studentname,studentcrtificatenumber。

(2)程序员理解的是,这个索引中包括了这两个字段,那么查询时就应该很快。实际不是。

大家注意一点,这个LX_STUDENTINFO索引,是四个索引字段,而他们的顺序

studycenternumber,studentnumber,studentname,studentcrtificatenumber,在数据库

设计中,如果查询采用的第一个字段和第二个字段组合,则该索引有效;如果查询采用第一个、第二个和第三个字段组合,该索引也有效;而如果第一个和第三个,

或第四个组合,则该索引是无效的,等同的效果仍是在没有索引的数据库中进行查询。也就是说建立的索引中的字段,在查询使用时,不能隔字段使用。

另外,索引中涉及到字段的顺序也会影响查询的性能,如果一个索引包含两个字段A1和A2,那么在查询时,一定要严格按索引中这两个字段的顺序设计查询,比

如:select from a where A1='A' and A2='B'。而如果程序员写成了select from a

where A2='B' and A1='A'的话,虽然不影响程序正常使用,但会增加数据库的压力,并且查询效能会降低。

根据这种思路,重新调整了一下这个表的索引,在这个表中增加了一个新的索引,只包括这两个字段,并且按StudentCrtificateNumber

和StudentNumber先后顺序排序。经过300人同时登录的压力测试,CPU占有率才只占2-3%,证明调整结果有效。

简单来说,服务器在为客户端服务时,每连接一个客户端都需要消耗服务器一定的资源,当大量客户端同时连接后,服务器上的资源(CPU、内存)无法满足需求时,会出现几种情况,一种是不再响应客户端请求,还有一种就是服务器崩溃,这就是网游频繁集体掉线的原因。

可能是以下原因导致B站视频卡顿:

1 网络状况不好。即使理论上网速足够,但是网络延迟严重、丢包率高就会影响视频的缓存和播放,导致视频卡顿。可以尝试关闭其他网络占用程序,避免网络资源争夺。

2 设备性能较差。B站视频播放需要消耗较大的硬件资源,如果设备性能不足,就会导致播放卡顿。可以尝试关闭其他需要占用设备资源的程序,提高设备性能。

3 视频服务器压力大。B站视频服务器在高峰期可能会遭受过多的访问请求,导致视频需要更长时间来缓存,出现卡顿问题。这种情况需要等待一段时间,等服务器压力减小后再重新尝试播放。

需要注意的是,以上问题产生可能是单独的原因,也可能是原因的组合,需要用户根据自己的情况进行排查。另外,也可以尝试使用其他视频网站或换一个时间段观看,以寻找更好的观看体验。

  wp-cronphp进程过多造成服务器负载过大的解决办法

  WordPress定时任务(如数据库自动备份、自动发表文章)主要靠wp-cronphp来实现的,其原理如下:当有用户访问Wordpress站点的内容是,Wordpress系统判断当时是否有需要运行的后台任务,如果有则在后台访问wp-cronphp执行定时任务。Wordpress定时任务功能给用户确实带来了很大的方便,但是也有一些用户在使用定时任务时遇到了一些问题。如wp-super-cache缓存插件的用户可能会遇到wp-cronphp进程过多,造成服务器负载过大或虚拟主机CPU配额超标。

  如你遇到wp-cronphp进程过多造成服务器负载过大,可以通过以下方法解决:

  1、禁用Wordpress定时任务wp-cron,编辑wp-configphp,加入以下内容:

  define( 'DISABLE_WP_CRON' , true);

  WordPress定时任务被禁用后,会造成一些功能无法使用,如数据库定时备份、定时发表文章等。如你确需要以上功能,可通过服务器crontab设置定时访问wp-cronphp来执行定时任务,具体方法如下:

  2、在Linux系统的crontab中填加以下内容(请修改对应的Wordpress目录),设置每15分钟访问一次wp-cronphp以执行Wordpress定时任务。

  /15 php -q /home/public_html/wp-cronphp

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何提高数据库性能,减少数据库服务器压力瓶颈一两个小方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情