首页 > 其他分享 >系统调优总结

系统调优总结

时间:2022-11-09 18:33:47浏览次数:40  
标签:总结 异步 性能 系统 语句 调优 线程 使用

一、算法调优

1、分而治之和预处理:

以前有一个程序为了生成月报表,每次都需要计算很长的时间,有时候需要花将近一整天的时间。于是我们把我们找到了一种方法可以把这个算法发成增量式的,也就是说我每天都把当天的数据计算好了后和前一天的报表合并,这样可以大大的节省计算时间,每天的数据计算量只需要20分钟,但是如果我要算整个月的,系统则需要10个小时以上(SQL语句在大数据量面前性能成级数性下降)。

SQL语句和数据库的性能优化也是这一策略,如:使用嵌套式的Select而不是笛卡尔积的Select,使用视图,等等。

二、代码调优

1、字符串的操作:

对于字符串的特性来说,能使用其他类型的尽量不适用字符串。

举几个例子,第一个例子是N年前做银行的时候,我的同事喜欢把日期存成字符串(如:2012-05-29 08:30:02),我勒个去,一个select where between语句相当耗时。另一个例子是,我以前有个同事把一些状态码用字符串来处理,他的理由是,这样可以在界面上直接显示,后来性能调优的时候,我把这些状态码全改成整型,然后用位操作查状态,因为有一个每秒钟被调用了150K次的函数里面有三处需要检查状态,经过改善以后,整个系统的性能上升了30%左右。

2、多线程的操作:

首先要考虑线程池的创建,但是对于代码内部来说肯定是要减少线程间的调度和上下文的切换,尽可能的使用到CPU的全部性能。所以线程数不是越多越好,通常对于计算比较多的情况来说,线程数 = N * CPU核数。

3、异步的操作:

如果我们的程序是同步操作,那么会非常影响性能,我们可以改成异步的,但是改成异步的方式会让你的程序变复杂。异步方式一般要通过队列,要注间队列的性能问题,另外,异步下的状态通知通常是个问题,比如消息事件通知方式,有callback方式,等,这些方式同样可能会影响你的性能。但是通常来说,异步操作会让性能的吞吐率有很大提升(Throughput),但是会牺牲系统的响应时间(latency)。这需要业务上支持。

三、网络调优

1、资源连接数调优:

对于出现一些访问端口不通,但重启后会恢复一段时间,之后接着访问不通的问题,可以考虑调整最大连接数。

Windows:修改Windows(端口)Socket的最大连接数

Linux:修改文件句柄数, ulimit -a查看open files

四、数据库调优

1、库表操作:

创建索引、分库分表、读写分离(主从复制)、使用执行计划(Explain)分析。

2、SQL语句调优:

该操作必定使用执行计划分析。

  • 索引一般都出现在Where或是Order by字句中,所以对WhereOrder by子句中的子段最好不要进行计算操作,或是加上什么NOT之类的,或是使用什么函数
  • 减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代
  • or 的查询尽量用 union或者union all 代替(在确认没有重复数据或者不用剔除重复数据时,union all会更好)
  • 不要select *
  • 不要用Having,因为其要遍历所有的记录
  • 尽可能地使用UNION ALL 取代 UNION
  • 索引不要过多
  • 尽量不使用 < > != 等比较
  • 尽量不对null值做判断,如:select id from t where num is null

标签:总结,异步,性能,系统,语句,调优,线程,使用
From: https://www.cnblogs.com/dyaqi/p/16874762.html

相关文章

  • 单例模式实现的多种方式、pickle序列化模块、选课系统需求分析等
    目录单例模式实现的多种方式方式一:方式二:方式三方式四pickle序列化模块选课系统需求分析功能提炼选课系统架构设计三层架构选课系统目录搭建选课系统功能搭建单例模式实......
  • Linux操作系统之chmod命令详细用法:Linux中的Chmod命令用于更改或分配文件和目录的权限
    前言①chmod命令用于改变Linux操作系统文件或目录的访问权限。用它控制文件或目录的访问权限。②chmod命令有两种用法一种是包含字母和操作符表达式的文字设定法。一......
  • 选课系统
    选课系统项目要求#项目分析: 选课系统 角色:学校、学员、课程、讲师 要求:1.创建北京、上海2所学校2.创建linux,python,go3个课程,linux......
  • 第一章 Kubernetes系统基础
    1.1容器技术概述近几十年来,IT领域新技术、新概念层出不穷,例如DevOps、微服务(Microservice)、容器(Container),云计算(CloudComputing)和区块链(Blockchain)等,真有“乱花渐欲......
  • LINQ编程总结
        LINQtoSQL查询表达式适用于关系数据库,查询表达式是基于对象的,它要求将数据库表和试图映射到实体,LINQTOSQL让数据库的操作变得更加的简单,完全弱化了数据库......
  • UML基础总结
    ......
  • python之路27 单例模式实现方式、pickle模块、选课系统目录搭建
    单例模式实现的多种方式单例1:(提前定义一个名字)classC1:__instance=Nonedef__init__(self,name,age):self.name=nameself.age......
  • 11月9日学习归纳总结
    11月9日学习归纳总结目录11月9日学习归纳总结一、单例模式实现的多种方式二、pickle序列化模块三、选课系统需求分析3.1整体需求3.2功能提炼3.3选课系统架构设计3.4选......
  • WPF总结
        WPF是WindowsPresentationFoundation的简称,是专门用于编写程序表示层的技术和工具,表示开发层的技术非常多,最初的ASP.NET,Winform,Sliverlight以及WPF,最近流行......
  • 单例模式、pickle模块、选课系统
    今日内容概要单列模式实现的多种方式pickle序列化模块选课系统需求分析选课系统架构设计选课系统目录搭建选课系统功能搭建选课系统管理员功能今日内容详细......