Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7591072 建立时间:2006年5月29日 |

| |
[MySQL]通过分区(Partition)提升MySQL性能 软件技术
lhwork 发表于 2006/12/22 9:11:36 |
——MySQL5.1新特性翻译系列
几年前,俺写过一篇题为
“The Foundation of Excellent
Performance”的文章(现在仍然可以在http://www.tdan.com/i016fe03.htm看到),俺对SQL语句是影响数据库
驱动系统性能的第一要素的观点有点质疑。其实在那时我在文章中就坚信数据库的物理设计在对高级数据库的性能影响上远比其他因素重要。同时俺还给大家看了
Oracle的研究,他们解释了为什么拙劣的物理设计是数据库停机(无论是有计划的还是没计划的)背后的主要原因。这么多年都过来 |
|
[Javascript]javascript setTimeout 和 setInterval 软件技术
lhwork 发表于 2006/12/22 8:46:32 |
setTimeout (表达式,延时时间) setInterval(表达式,交互时间) 延时时间/交互时间是以豪秒为单位的(1000ms=1s)
setTimeout 在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次 setInterval 在执行时,它从载入后,每隔指定的时间就执行一次表达式
set Timeout 也可以实现象setInterval一样的功能 set Timeout: <script language="javascript"> var i; i=0; function reloop() { i=i+1; alert(String(i)); setTimeout("reloop()",1000); } reloop(); </script>
setInterval |
|
[Javascript]JavaScript时钟间隔的问题~ 软件技术
lhwork 发表于 2006/12/22 8:46:03 |
JavaScript中setTimeout()和setInterval()用于创建和管理时钟.但这个时钟的精度是多少,却没有什么资料来提及.在讨论具体的问题前,先说明一下setTimeout与setInterval在时钟间隔为0值的情况下的反应.当用户置setTimeout(proc, 0)时 ,将让出CPU直到下一个时钟间隔再开始执行proc,而并非"在0ms后执行proc";当用户置setInterval(proc, 0)时,时钟不会被初始化. JavaScript要求至少以1ms为间隔创建时钟.接下来,当interval值为1(或者其它很小的值)时,时钟将按一种"最小的"时间间隔来触发时钟,这个间隔,与setTimeout(proc, 0)时的间隔是同一值.下面的代码用于检测该值:<script> dates = new Array(100000); count = 0; tid = setInterval(func |
|
[Linux]ulimit使用简介 软件技术
lhwork 发表于 2006/12/20 11:39:56 |
1,说明:
ulimit用于shell启动进程所占用的资源.
2,类别:
shell内建命令
3,语法格式:
ulimit [-acdfHlmnpsStvw] [size] 4,参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用 |
|
[Spring]spring 的OpenSessionInViewFilter简介 软件技术
lhwork 发表于 2006/12/20 11:09:48 |
假设在你的应用中Hibernate是通过spring
来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者
OpenSessionInViewInterceptor。session会在transaction结束后关闭。 如果你采用了spring的声明式事务模式,它会对你的被代理对象的每一个方法进行事务包装(AOP的方式)。如下: <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager"/> |
|
[MySQL]MySQL查询优化系列讲座之调度和锁定 软件技术
lhwork 发表于 2006/12/20 10:30:54 |
前面的部分主要是聚焦于如何让单独的查询执行的速度更快。MySQL还允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样
单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。这一部分讲解MySQL的默认的调度策略和可以用来影响这些
策略的选项。它还谈到了并发性插入操作的使用和存储引擎锁定层次对客户端的并发性的影响。为了讨论的方便,我们把执行检索(SELECT)的客户端称为"
读取者",把执行修改操作(DELETE、INSERT、REPLACE或UPDATE)的客户端称为"写入者"。
MySQL的默认的调度策略可用总结如下:
· 写入操作优先于读取操作。
· 对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。
· 对某张数据表的多个读取操作可以同时地进行。
MyISAM和MEMORY存储引擎借助于数据表锁来实现这样的调度策略。当客户端访问某张表的时候,首先必须获取它的锁。当客户端完成对表的操作的时
|
|
[MySQL]MySQL查询优化系列讲座之数据类型与效率 软件技术
lhwork 发表于 2006/12/20 10:30:27 |
这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导:
在可以使用短数据列的时候就不要用长的。如果你有一个固定长度的CHAR数据列,那么就不要让它的长度超出实际需要。如果你在数据列中存储的最
长的值有40个字符,就不要定义成CHAR(255),而应该定义成CHAR(40)。如果你能够用MEDIUMINT代替BIGINT,那么你的数据表
就小一些(磁盘I/O少一些),在计算过程中,值的处理速度也快一些。如果数据列被索引了,那么使用较短的值带来的性能提高更加显著。不仅索引可以提高查
询速度,而且短的索引值也比长的索引值处理起来要快一些。
如果你可以选择数据行的存储格式,那么应该使用最适合存储引擎的那种。对于
MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列。例如,让所有的字符列用CHAR类型代替VARCHAR类型。权衡得失,我们会发现
数据表使用了更多的磁盘空间,但是如果你能够提供额外的空间,那么固定长度的数据行被处理的速度比可变长度的数据行要快一些。对于那些被频繁修改的表来
说,这一点尤其突出,因为在那些情 |
|
[MySQL]MySQL查询优化系列讲座之查询优化器 软件技术
lhwork 发表于 2006/12/20 10:29:38 |
当你提交一个查询的时候,MySQL会分析它,看是否可以做一些优化使处理该查询的速度更快。这一部分将介绍查询优化器是如何工作的。如果你想知道MySQL采用的优化手段,可以查看MySQL参考手册。
当然,MySQL查询优化器也利用了索引,但是它也使用了其它一些信息。例如,如果你提交如下所示的查询,那么无论数据表有多大,MySQL执行它的速度都会非常快:
SELECT * FROM tbl_name WHERE 0; 在这个例
子中,MySQL查看WHERE子句,认识到没有符合查询条件的数据行,因此根本就不考虑搜索数据表。你可以通过提供一个EXPLAIN语句看到这种情
况,这个语句让MySQL显示自己执行的但实际上没有真正地执行的SELECT查询的一些信息。如果要使用 |
|
|