View Mode: Normal | Article List

mysql数据库分区

[ 2009-10-30 23:59:21 | Author: zhenhua ]
http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html


可以通过使用SHOW VARIABLES命令来确定MySQL是否支持分区,例如:

mysql> SHOW VARIABLES LIKE '%partition%';

下面的例子给出了怎样创建一个通过HASH分成6个分区、使用InnoDB存储引擎的表:

CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)

ENGINE=INNODB

PARTITION BY HASH(MONTH(tr_date))

PARTITIONS 6;

如果现在执行一个SHOW CREATE TABLE命令,可以观察到表的分区结构是如何被改变的:

mysql> SHOW CREATE TABLE part_tab\G;

----------------------------按照RANGE分区的表
是通过如下一种方式进行分区的,每个分区包含那些分区表达式的值位于一个给定的连续区间内的行。这些区间要连续且不能相互重叠,使用VALUES LESS THAN操作符来进行定义
...

Read More...

页面加载对访问的影响

[ 2009-10-30 23:43:51 | Author: zhenhua ]
页面访问慢是网站公认的死穴,如果页面都没法访问,往后再精彩的体验都等于零。这个问题如果专业点说,叫做“加载”呈现效率。那么具体了讲,除常规的服务器处理速度、服务器端网络带宽、客户端网络带宽等“硬”问题外,有哪些是技术上没处理好的“软”问题?

举个例子,某页面浏览到一个地方卡住了,至少要等十几秒才出来内容。排查原因,浏览其他网站页面很快,说明客户端网络带宽没问题;浏览同个服务器上其他网站页面都很快,说明服务器的处理速度和网络带宽也没问题。分析代码可能有好几种情况,在YUI官方加速网站的最佳办法提到了13条方法,对于普通产品来说,个人认为有几条应该强化注意,其他(灰色)从性价比上来说则成本有点高。
  • Make Fewer HTTP Requests 更少的HTTP请求
  • Use a Content Delivery Network 使用CDN
  • Add an Expires Header 指定过期时间
...

Read More...

Struts 标签与JSP效率对比

[ 2009-10-30 23:40:12 | Author: zhenhua ]
先将Struts标签与JSP的代码进行比较

1.JSP版本
 < % long s=System.currentTimeMillis();%>
< SPAN style="DISPLAY: none">

< % for(int i=0;i<10000;i++){%>

< %=theAction.getQueryString()%>

< %}%>

< /SPAN>

< % long e=System.currentTimeMillis();%>

< %=(e-s)%>
2.webwork (webwork版本,也可换成Struts标签)
 < % long s=System.currentTimeMillis();%>
< % for(int i=0;i<10000;i++){%>

< ?xml:namespace prefix = ww />< ?xml:namespace prefix = ww />

< %}%>

< /SPAN>

< % long e=System.currentTimeMillis();%>

< %=(e-s)%>
...

Read More...

web架构设计经验分享

[ 2009-10-21 13:16:27 | Author: zhenhua ]
转自http://blog.csdn.net/yizhu2000


本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查看视频
架构设计的几个心得:

一,不要过设计:never over design

这是一个常常被提及的话题,但是只要想想你的架构里有多少功能是根本没有用到,或者最后废弃的,就能明白其重要性了,初涉架构设计,往往倾向于设计大而化一的架构,希望设计出具有无比扩展性,能适应一切需求的增加架构,web开发领域是个非常动态的过程,我们很难预测下个星期的变化,而又需要对变化做出最快最有效的响应。。
ebay的工程师说过,他们的架构设计从来都不能满足系统的增长,所以他们的系统永远都在推翻重做。请注意,不是ebay架构师的能力有问题,他们设计的架构总是建立旧版本的瓶颈上,希望通过新的架构带来突破,然而新架构带来的突破总是在很短的时间内就被新增需求淹没,于是他们不得不又使用新的架构
web开发,是个非常敏捷的过程,变...

Read More...
关键字: 水平切分,分库,分表,主从,集群
第1章 引言
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的 互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层 已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过负载均衡策略,有效的降低了单台 机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取 (Read)数据的速度和并发量。目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,Taobao,Alibaba,Tencent,它们大 都实现了自己的分布式数据访问层(DDAL)。以实现方式和实现的层次来划分,大概分为两个层次(Java应用为例):JDBC层的封装,ORM框架层的 实现。就JDBC层的直接封装而言,现在国内发展较好的一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,现在仍然处于测试阶 ...

Read More...
关键字: 大型网站架构
之前也有一些介绍大型网站架构演变的文章,例如 LiveJournal的、 ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中 将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念, :),文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。

架构演变第一步:物理分离 webserver和数据库
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候 已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统 的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据 库和应用互相影响,应用出问题 了, 数据库也很容易出现问题,而数据...

Read More...

MYSQL的master/slave数据同步配置

[ 2009-10-21 12:40:26 | Author: zhenhua ]
有三个地址必须调试成功,
1 从库连接主库进行测试: mysql -h192.168.200.80 -urepluser -ptestpassword 此处必须连接成功
2 show master status;必须有相关显示
3 show slave status;
必须为
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

sudo vim /etc/mysql/my.cnf mysql 配置文件
sudo /etc/init.d/mysql restart 重启 mysql

数据库服务器 Master, 主机名 :DB01, IP: 192.168.1.80

数据库服务器 Slave, 主机名 :DB02, IP: 192.168.1.103

先配置 Master 的 mysql 环境 .

修改 mysql 的配置文件 my.cnf 确保有下面的信息 , 没有加上 . 有的话修改成下面这样 . 其他的可以保持默认配置 .

[mysqld]
log-bin = mysql-bin
...

Read More...

分表处理设计思想和实现

[ 2009-10-21 11:53:32 | Author: zhenhua ]
一、概述
分表是个目前算是比较炒的比较流行的概念,特别是在大负载的情况下,分表是一个良好分散数据库压力的好方法。
首先要了解为什么要分表,分表的好处是什么。我们先来大概了解以下一个数据库执行SQL的过程:
接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL --> 按照分析结果进行数据的提取或者修改 --> 返回处理结果
当然,这个流程图不一定正确,这只是我自己主观意识上这么我认为。那么这个处理过程当中,最容易出现问题的是什么? 就是说,如果前一个SQL没 有执行完毕的话,后面的SQL是不会执行的 ,因为为了保证数据的完整性,必须对数据表文件进行锁定,包括共享锁和独享锁两种锁定。 共享锁是在锁定的期间, 其它线程也可以访问这个数据文件,但是不允许修改操作,相应的,独享锁就是整个文件就是归一个线程所有,其它线程无法访问这个数据文件。一般MySQL中 最快的存储引擎MyISAM,它是基于表锁定的,就是说如果一锁定的话,那么整个数据文件外部都无法访问,必须等前一个操作完成后,才能接收下一个操作, 那么在这个前一个操作没有执行完成,后一个操作等待在队列里无法执行的情况叫做阻塞,一般我们通俗意义上叫做“锁表”。
...

Read More...