关于 Java Web 项目性能提升的一些思路

发表于:2013-12-20 11:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Defonds    来源:51Testing软件测试网采编

  使用 Nginx 作为前端接入
  用 Nginx 进行动静分离。这个不用多讲,新浪、网易、淘宝、腾讯等巨头的使用已经说明了一切。
  保持最简单的架构
  遵守 KISS 原则(Keep it simple and stupid)。尽量不要考虑项目外的重用。过多的考虑项目外的重用,必然会增加项目的复杂度。避免过度集成,让每个模块只做自己的事,这对于日后的维护和模块复用都有好处。
  精心设计缓存处理、毫不吝啬代码(对象、列表、片段)
  对于门户网站的首页来说,往往可能会有近百个 SQL。用户并发上去以后,光首页就足以让服务器 down 掉。缓存不但有利于降低负载,而且还能提高响应速度。
  调整使用聚集索引
  对于每个表来讲,聚集索引只有一个,利用好了,查询速度会有意想不到的提升效果。
  以 MySql 为例,InnoDB选取聚集索引参照列的顺序是
  1. 如果声声明了主键(primary key),则这个列会被做为聚集索引;
  2. 如果没有声明主键,则会用一个唯一且不为空的索引列做为主键,成为此表的聚集索引;
  3. 上面二个条件都不满足,InnoDB会自己产生一个虚拟的聚集索引。
CREATE TABLE `timeline_raw` (
`rawId` bigint(20) NOT NULL AUTO_INCREMENT,
`uid` bigint(20) DEFAULT NULL,
`did` bigint(20) DEFAULT NULL,
`channelId` char(1) NOT NULL DEFAULT '1' COMMENT '1:qvga; 2:720p',
`fileId` bigint(20) DEFAULT NULL,
`sectionId` bigint(20) DEFAULT NULL,
`headerFilePath` varchar(120) DEFAULT NULL,
`startTime` bigint(20) DEFAULT NULL,
`endTime` bigint(20) DEFAULT NULL,
`updateTime` datetime DEFAULT NULL,
`createTime` datetime DEFAULT NULL,
PRIMARY KEY (`rawId`),
KEY `index_uid_did_startTime` (`uid`,`did`,`startTime`) USING BTREE,
KEY `index_uid_did_endTime` (`uid`,`did`,`endTime`) USING BTREE,
KEY `index_time` (`startTime`) USING BTREE,
KEY `index_uid_did_fileId` (`uid`,`did`,`sectionId`) USING BTREE,
KEY `index_sectionId` (`sectionId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
  这个表有四个索引:主键 rawId、sectionId、`uid`,`did`、startTime。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号