性能分析工具

1 使用VS自带的神器 性能探测器

  1. 方案一,看单个方法。打断点 ,调试打开检测窗口,开启cpu日志,然后调试
  2. 方案二,看全局,调试,打开性能探测器

dotTrace

需要Release模式运行

四种模式

  • 简单 粗略模式
  • 精确模式
  • 逐行模式 适合已经定位出问题代码段的时候用
  • 间隔时间抓取 不推荐

性能测试工具

Benchmark 开源的net程序性能测试工具

  1. 确定要运行几次
  2. 评估Benchmark自身开销
  3. 热身
  4. 测试
  5. 测试结果(去掉自身评估出来的开销)
  6. 生成报告

使用方法

通过nuget下载benchmarkDotNet包

测试的方法上加上[Benchmark]

数据库性能优化

能用数值型的就不要用字符串的,字符串尽量短小

减少多表连接

逻辑查询优化

sql优化

减少多表连接

等价sql写法替换 比如substring 和like,用like能好

物理优化

最常见的是:索引

重复度超过10%的,一般就不建议建立索引了

使用索引列不要有计算函数,否则索引失效

加缓存

分库分表

数据量达到亿级别时考虑

能不分就不分!!!

水平拆分 按照属性拆分 比如年份 拆表

垂直拆分: 按业务分库,相同业务一个库, 拆成订单表 订单子表

所有

分库分表带来的问题

事务一致性问题(跨库跨表事务问题)

跨库跨表联查问题

水平切分的表 排序和分页的问题

自增主键问题

GUID 也会重复(单机不重复,集群下在不同服务器有极少概率重复,500w分之一, 但是在亿级别下就不容小视了)==【雪花算法】==

历史数据迁移问题

分库分表的问题如何解决