首页 > 数据库 >数据库系统优化--业务逻辑设计优化

数据库系统优化--业务逻辑设计优化

时间:2024-01-23 13:05:49浏览次数:30  
标签:-- 数据 索引 sql 这时 优化 id 逻辑设计

     当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的。这时你要考虑业务逻辑优化和表设计的重构。这两点的确和设计结合的很紧密。


  业务逻辑优化

      结合实际,我们先谈谈业务逻辑优化。

      案例一:

         我们的系统一个文档模块,客户点击时很慢,通过性能分析,是点击是去查询数据库,这时系统是通过Hibernate来两步处理:

           1,计算该类型的文档数量总数。

           2,显示最新文档的前20篇文档。


计算该类型的全部文档,可能有几万篇数据),输出就一条总数。这时因为业务逻辑复杂,即使建立索引,分区等等速度也是无法提高,因为不能真正做到索引覆盖和分区消除。


是hash联结,而且并发用户一大,数据库服务器压力很大。


      这时常规的优化方法是没有效果的。这时我们也发现,客户其实对以前比较老的数据是不关心的,一般只是对近期的数据比较感兴趣,所有我们就在查询时默认设定半年的时间,然后在时间上设定聚集索引。并默认在此时间上排序使其使用合并联结,减少输入数据量,结果速度有明显的提升。

 

    案例二:

       我们在优化一个客户系统时,碰到一种情况,在客户的一选择功能时,客户点击一下选择相关数据,这时页面要要几分钟才能出来,客户很不满意,这时修改sql和索引都没有办法,他的输入的数据量也很大,和上面一下也要计算总数和取最新前几条数据。

       这时我们在查询是关联了人员,通过调查,发现客户只对和自己相关的数据感兴趣。也只是查询自己相关的数据。所以这时在sql语句里增加用户id这条限制,同时在增加userid的索引,这样一来,速度就大大提高。


    总接:

        当然以上两个案例,是从输入入手,减少输入和输出的数据量,主要优化业务逻辑,达到优化系统。当然有些情况要和客户确认和说服他们,有时他们不一定都认可,这时要说明这样做的目的,相信他们也会理解。


    表设计优化

         表设计,在我们开发系统时已经确定,好的设计的确能大大提高性能,我们在优化系统时,碰到一个比较麻烦的问题。

 


         这条sql是判断5个维度,一个用户id, 一个机构id,一个岗位id, 还有级别判断和是否公共。sql语句里有5个”or“组成查询,表数据一大就表扫描,性能很差,但业务要求和系统要求这样判断。即使在表中这五个字段都建索引,速度也不会快。太多"OR"了,SQL Server 查询分析器无法优化。

 

        这时由于设计时: 用户id,机构id,岗位id为3个只有一个有数据。所以将这3个字段合并,较少"Or"语句,让数据库能使用索引。

        总结

          表设计是优化是让sql语句能使用到索引,或者增加冗余字段减少其输入和输出数据,或者减少查询数据(如计算静态表),典型的如索引视图,数据仓库等。

          



标签:--,数据,索引,sql,这时,优化,id,逻辑设计
From: https://blog.51cto.com/u_16532032/9376964

相关文章

  • SQL Server 死锁处理和优化心得
       前段时间提到的"SQLServer2005死锁解决探索",死锁严重,平均每天会发生一次死锁,在解决和处理SQLserver2005死锁中查了很多资料和想了很多办法,对为何出现死锁和怎样较少死锁有了进一步认识,在这里和大家一起分享:    SQLServer锁类型    在数据库中主要存在两种......
  • 数据库重构(一):字段合并
    刚到公司不久,才知道公司产品在性能上有问题,数据量和并发数一大,系统就很慢,需要优化。在和公司技术同事讨论某模块优化,通过sql无法优化,因为系统sql是判断5个纬度,一个用户id,一个机构id,一个岗位id,还有级别判断和是否公共。     刚到公司不久,才知道公......
  • 喝黑豆汤前后的明显变化
    网友善果聊孩子喝黑豆汤前后的明显变化  【传说】豆仔姥姥(1134846367) 2014/11/279:25:25  笑笑,你怀孕喝黑豆汤了吗?  【冒泡】笑笑(237337745)2014/11/279:57:24没,家里老人婆有点那个,所以没喝  【活跃】善果2013.12.8(1515420513) 10:21:48@笑笑你好,请允许我和您说......
  • 真正的高手,都很简单
    大家都坐过汽车,你们觉得究竟是什么汽车?是不是觉得,要解释清楚还挺难的:要由发动机提供动力,烧油或者清洁能源带动轮子转动;是由底盘构成的,有座位、有玻璃,可以用来载客拉货……先打住,我们看看高手怎么说:“汽车,不就是四个轮子和两排沙发吗?”说这句话的人,是刚刚进入汽车行业的李书福,吉利集......
  • mysql分析sql语句基础工具 -- explain
    分析sql语句explainexplain(sql语句)G;分析结果:idsql语句编号如果是连接查询,表之间是平等关系,编号相同;如果有子查询,编号递增。select——type查询类型table查询针对的表 该值可能是实际的表名或者临时表,derived表示form子查询,null表示无须查表possible_key可能用到的索引ke......
  • MySQL 8.0 的xtrabackup备份
     xtrabackup备份语句:   fname=`date+%F_%H-%M-%S`mkdir-p/mnt/dbbak/db_$fnamextrabackup--defaults-file=/etc/my.cnf-uhyb-phd-h/var/lib/mysql-S/var/lib/mysql/mysql.sock-Hlocalhost--port=3306--backup--parallel=4--target-dir=/mnt/dbbak/db_$f......
  • mysql之my.cnf详解
    值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;relay-log-purge=1#是否自动清空不再需要中继日志时。默认值为1(启用)expire_logs_days=30#超过30天的binlog删除binlog_cache_size=1M#在一个事务中......
  • 幽冥问答录-白话文
    1、问:先生往年曾做过阴间的判官,对吗?答:是的,世人听到这种事,都认为怪异,可是以我看来,这种事很平常,没什么好奇怪的。2、问:这是什么时候的事情?答:是光绪庚子(1900)年间的事,当时我十九岁。3、问:所担任的的是什么职务,属谁管辖,有几个职员?答:属东岳大帝管辖,但是我一直没有见到东岳大帝,只有在判案......
  • 南京信息工程大学宿舍管理员吴阿姨的精彩演讲
    每年到了7月份,是各大高校的学生陆陆续续的到了离别的日子,大家可能都有印象,唱着《隐形的翅膀》给未来的毕业生励志的北大校长,还有发表了精彩的演讲华东科技大学的校长,他们都是因为在毕业典礼上的表现是红遍了网络,可是这次在毕业生的典礼上走红的人物不是校长,而是一位普通的宿舍管理......
  • 随Linux开机自动启动mysql
    在MySQL的管理过程中,会遇到PCServer脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都手动操作,是很繁琐的事情。我们可以采用随系统一起启动MySQL服务,这样就解决了频繁手动启动MySQL的问题。要实......