上课时所讲的 质量属性 性能战术 可以用下图进行展示:
性能战术定义:
性能与时间有关。事件发生时,系统必须对其做出响应。事件到达和响应有很多特性,但性能基本上与事件发生时,将要耗费系统多长时间做出响应有关。
在使性能变得复杂的众多因素中,其中一个因素就是事件源的数量和到达模式。事件可以来自用户请求、其他系统或系统内部。到达模式可以分为周期性的、随机的或偶然性的。
可以用等待时间、处理期限、系统吞吐量、响应抖动(等待时间的变化)、缺失率(由于系统太忙因而无法做出响应所导致的未处理事件的数量)、数据丢失(因为系统太忙所丢失的数据)等指标来度量。
性能战术的目标就是对在一定的时间限制内到达系统的事件生成一个响应。到达系统的可以是单个事件,也可以是事件流的形式,它是请求执行计算的触发器。它可以是消息的到达、定时器到时、系统环境中重要的状态变化的检测,等等。系统对事件进行处理并生成一个响应。性能战术控制生成响应的时间。等待时间是事件到达和对该事件生成响应之间的时间。
总结为:
- 提高计算效率,如改进关键算法。 比如,在我们进行数据查找时,采用二分查找法可以大大减少查找时间。
- 减少计算开销。 比如保存上次计算的结果。
- 减少所处理事件的数量。
- 控制资源的使用:限制执行时间;比如,我们读取硬件数据,要求必须在指定的最长时间内返回。限制队列大小,控制处理事件数量; 比如,限制消息队列的大小,不接受过多的事件涌入。
- 引入并发(Introduce concurrency ):通过并行处理,减少闭锁时间;
- 维持数据或计算的多个副本(Maintain multiple copies ):维持副本可以减少相同的计算;
- 增加可用资源(Increase available resources ):比如增加CPU速度、增加内存等。
- 当存在资源争用时,必须对资源进行调度,以使资源协调一致的运行,以减少闭锁时间。
资源消耗:包括CPU、数据存储、网络通信带宽和内存,但它也可以包括由设计中的特定系统所定义的实体。例如必须对缓冲器进行管理,并且对关键部分的访问必须是按顺序进行的。事件可以是各种类型的,每种类型的事件都经过了一个处理序列。
对其他计算的依赖性:计算可能必须等待,因为它必须与一个计算的结果同步,或者是因为它在等待它所启动的一个计算的结果。例如,它可能会从两个不同的源读取信息,如果这两个源是按顺序读取的话,等待时间将会比并行读取高。
1、全文索引
索引教程:https://www.cnblogs.com/qianzf/p/7131741.html
我在信息领域热词分析系统里面寻找可以提高性能,以及因为计算导致系统反应慢的地方,首先我找到的搜索。
在我爬取的信息领域热词引用的文章txt有36M共36万条数据,在这个搜索过程中我想到了以前没有用过的全文索引,于是我系统的看了一下建立全文索引以及使用的教程。
1 在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQL Server 7.0新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称): 2 1. 启动数据库的全文处理功能(sp_fulltext_ 3 database);; 4 2. 建立全文检索目录(sp_fulltext_catalog); 5 3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table); 6 4. 指出表中需要全文检索的列名(sp_fulltext_ 7 column);; 8 5. 为表创建全文索引(sp_fulltext_table);; 9 6. 填充全文检索目录(sp_fulltext_catalog)。 10 下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引 11 use test //打开数据库 12 //打开全文索引支持,启动SQL Server的全文搜索服务 13 execute sp_fulltext_database ‘enable’ 14 //建立全文检索目录ft_test 15 execute sp_fulltext_catalog ‘ft_test’, ‘create’ 16 为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。 17 execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’ 18 //设置全文索引列名 19 execute sp_fulltext_column ‘book’, ‘title’, ‘add’ 20 execute sp_fulltext_column ‘book’,‘notes’, ‘add’ 21 //建立全文索引 22 execute sp_fulltext_table ‘book’, ‘activate’ 23 //填充全文索引目录 24 execute sp_fulltext_catalog ‘ft_test’, ‘start_full’ 25 至此,全文索引建立完毕。 26 进行全文检索 27 SQL Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。