随笔分类 -  tuning

摘要:通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作)。当读取者完成对表的操作的时候,锁就会被解除。如果写入者正在等待的时候,另一个读取操作到达了,该读取操作也会被阻塞(block),因为默认的调度策略是写入者优先于读取者。当第一个读取者完成操作并解放锁后,写入者开始操作,并且直到该写入者完成操作,第二个读取者才开始操作。 通过LOCK TABLES和UNLOCK TABLES语句可以显式地获取或释放锁,但是在通常情况下,服务器的锁管理器会自动地在需要的时候获取锁,在不再需要的时候释放. 阅读全文
posted @ 2013-09-11 21:51 Jevo 阅读(8008) 评论(1) 推荐(1)
摘要:第一步:检查系统的状态 通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率、IO、网络,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外,还应观注那些占用系统资源(cpu、内存)的进程。1.用vmstat察看关于内核进程,虚拟内存,磁盘,cpu的的活动状态[root@ks01 ~]# vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r b swpd free bu 阅读全文
posted @ 2013-09-10 21:49 Jevo 阅读(3988) 评论(0) 推荐(0)
摘要:在 Zen And The Art Of Scaling - A Koan And Epigram Approach 一文中, Russell Sullivan 提出一个很有趣的设想:一共有20种经典的瓶颈。这听起来就像只有20种基本的故事情节(20 basic story plots)那样让人怀疑。不过基于每个人不同的分类方式,这个说法或许是对的,但是在现实中,众所周知,瓶颈是无穷无尽的而且涉及方方面面。 一天, 来自 Terracotta 的 Aurelien Broszniowski 给我电邮了一份他心中的瓶颈列表,我们同时把我们的邮件抄送给了Russell, 他也给出了他的列表。而我. 阅读全文
posted @ 2013-09-09 21:37 Jevo 阅读(361) 评论(0) 推荐(0)
摘要:在分析性能欠佳的查询时,应考虑: 1) 应用程序是否正获取超过需要的数据,即访问了过多的行或列。 2) Mysql服务器是否分析了超过需要的行。 如果发现访问的数据行数很大,而生成的结果中数据行很少,那么可以尝试修改,比如使用覆盖索引、更改架构或重写查询让优化器可以以优化的方式执行它。 优化最终集中在减少IO,降低CPU,提高查询速度。 一般应用中数据库通常是IO密集型的,大部分数据库操作中超过90%的时间是由IO操作所占用,所以减少IO访问次数是SQL优化中首要考虑的因素。除了IO外,需要再考虑优化CPU的运算量。通常,ORDER BY、GROUP BY、DISTINCT和一些比较运算都是主 阅读全文
posted @ 2013-09-06 22:10 Jevo 阅读(2250) 评论(0) 推荐(1)
摘要:1.如果索引了多列,遵守最左前缀法则。所谓最左前缀,指的是查询从索引的最左前列开始,并且不跳过索引中的列。mysql> explain select uid, fuid, name from ptb where uid=1378109017;+----+-------------+-------+------+---------------+----------+---------+-------+------+-------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | 阅读全文
posted @ 2013-09-05 22:17 Jevo 阅读(374) 评论(0) 推荐(0)
摘要:1. 优化数据库对象1)选择表合适存储引擎:MyISAM存储引擎: 应用时以读和插入操作为主,只有少量的更新和删除,并且对事务的完整性,并发性要求不是很高的。 * 表锁:MyISAM表有表级锁,注意不要让它成为瓶颈。 * 不支持自动数据恢复:如果MySQL服务器崩溃或掉电,就应该在使用之前进行检查和执行可能的修复。如果有大型表,这可能会花几个小时。 * 不支持事务:MyISAM表不支持事务。实际上,MyISAM甚至不保证单个命令完成。如果在多行UPDATER的中途有错误发生,一些行会被更新,而另外一些行则不会。 * 只有索引被缓存在内存中:MyISAM只缓存了MySQL进程内部的索引,并保存在 阅读全文
posted @ 2013-09-03 22:26 Jevo 阅读(742) 评论(0) 推荐(1)
摘要:性能测试包括:基准测试、负载测试、强度测试、容量测试和压力测试> 基准测试:按百度百科中的定义:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。> 负载测试:(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。通 过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。 关注点:how much> 强度测试(Stress Test): 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。包括 S 阅读全文
posted @ 2013-03-20 22:00 Jevo 阅读(446) 评论(0) 推荐(0)
摘要:1.优化是开发的事,测试是测试员的事 很多时候,我们会认为优化仅仅是开发需要做的事,与测试人员无关。的确开发人员可以通过一些调优工具进行程序优化工程,但测试人员的作用仍是不可替代的。测试人员更能从客户的角度来看待问题,同时不必关心程序的实现方式,往往更能找出软件的热点问题,帮助提高软件系统的体验值。2.优化主要是找出代码热点,修改代码提高响应 优化不仅仅是修改代码,而应该从整体上来考虑出一个良好的优化方案,包括程序接口、结构等。优化的落脚点最终还是在于找到热点代码,改进代码段,以期得到大大性能提升。3.用降低服务器压力方式来提高用户访问速度我们通常理解认为降低服务器的压力可以提高用户的访问速度 阅读全文
posted @ 2013-03-17 21:32 Jevo 阅读(199) 评论(0) 推荐(0)
摘要:我们讨论的软件性能关注点不在于软件所完成的特定功能,而是完成额定功能时所表现出来的及时性、可靠性、稳定性上。由于软件操作的主体是人,不同的人对于同一软件功能有着不同的主观体验,所以不同的人对性能的考察角度和要求也不同。泛泛讲指标一般有:响应时间、吞吐量、并发连接数、资源利用率等。对不同的应用系统和不同的应用场景,将会有明确的性能指标(不考虑系统和应用场景谈性能指标是没有意义的)。关于性能指标的定义,可以从教科书或网上找到。响应时间是指请示发出到接收到响应结果的整个时间。在测试中,经常会将响应时间确定到平均响应时间和最大响应时间。响应时间直接影响到用户的使用体验,所以响应时间的确定是通过根据用户 阅读全文
posted @ 2013-03-16 22:13 Jevo 阅读(456) 评论(0) 推荐(0)
摘要:性能调优,简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。我们在软件开发的后期,通常会考虑所开发的软件的性能问题,并会对软件进行常规的性能优化,提升用户的体验。软件性能优化是一个系统性的工程,会反复经历测试、代码优化、再测试。。。过程,涉及到性能测试,代码分析修改评审,软件结构调整,数据库优化等。性能调优内容涉及到软件运行的软硬平台、运行配置、架构设计,算法设计及开发语言等。性能调优的手段主要依靠性能测试、工具分析、优化配置、改进算法、调整架构等。性能调优的一般步骤总是这样的:1。软件系统评估,建立可接受的性能指标2。软件系统修改前的性能,建立调优基线 阅读全文
posted @ 2013-03-14 23:11 Jevo 阅读(308) 评论(0) 推荐(0)