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

| |
[MySQL]MySQL查询优化技术系列讲座之使用索引 软件技术
lhwork 发表于 2006/12/20 10:28:54 |
索引是提高查询速度的最重要的工具。当然还有其它的一些技术可供使用,但是一般来说引起最大性能差异的都是索引的正确使用。在MySQL邮件列表
中,人们经常询问那些让查询运行得更快的方法。在大多数情况下,我们应该怀疑数据表上有没有索引,并且通常在添加索引之后立即解决了问题。当然,并不总是
这样简单就可以解决问题的,因为优化技术本来就并非总是简单的。然而,如果没有使用索引,在很多情况下,你试图使用其它的方法来提高性能都是在浪费时间。
首先使用索引来获取最大的性能提高,接着再看其它的技术是否有用。
这一部分讲述了索引
是什么以及索引是怎么样提高查询性能的。它还讨论了在某些环境中索引可能降低性能,并为你明智地选择数据表的索引提供了一些指导方针。在下一部分中我们将
讨论MySQL查询优化器,它试图找到执行查询的效率最高的方法。了解一些优化器的知识,作为对如何建立索引的补充,对我们是有好处的,因为这样你才能更
好地利用自己所建立的索引。某些编 |
|
[MySQL]MySQL查询优化讲座之管理员的优化措施 软件技术
lhwork 发表于 2006/12/20 10:14:32 |
前面的部分中讲解的优化措施都是没有特权的MySQL用户能够执行的。可以控制MySQL服务器或计算机的系统管理员能够执行额外的优化措施。
例如,有些服务器参数附属于查询处理过程,并且是可以调整的,而且某些硬件配置因素对查询处理速度有直接的影响。在很多情况下,这些优化措施提高了整个服
务器的性能,因此可以让所有的MySQL用户都受益。
一般来说,当你执行管理员优化的时候,应该紧记以下规则:
· 访问内存中的数据快于访问磁盘上的数据。
· 尽量把数据保存在内存中可以减少磁盘操作。
· 保留索引中的信息比保留数据记录的内容更重要。
我们在后面将讨论如何应用这些规则。
增加服务器缓存的大小。服务器拥有很多参数(系统变量),你可以改变这些参数来影响服务器的操作。其中的几个参数直接地影响查询处理的速度。你可以改变
的最重要的参数是数据表缓存的大小和存储引擎用于缓冲索引操作信息的缓存大小。如果你拥有可用的内存,就把它分配给服务器的缓存,以允许信息存储在内存中
并减少磁盘操作 |
|
[MySQL]mysql数据库优化 软件技术
lhwork 发表于 2006/12/20 10:09:22 |
首先,为了使一个系统更快,最重要的部分就是基础设计,不过有些东西是现有情况下无法逾越的,比如说系统常见的瓶颈. 我所能想到的:
1:磁盘寻道能力,以高速硬盘(7200转/秒),理论上每秒寻道7200次.这是没有办法改变的,优化的方法是----用多个硬盘,或者把数据分散存储.
2:硬盘的读写速度,这个速度非常的快,这个更容易解决--可以从多个硬盘上并行读写.
3:cpu.cpu处理内存中的数据,当有相对内存较小的表时,这是最常见的限制因素.
4:内存的限制.当cpu需要超出适合cpu缓存的数据时,缓存的带宽就成了内存的一个瓶颈---不过现在内存大的惊人,一般不会出现这个问题.
第二步: (本人使用的是学校网站的linux平台(Linux ADVX.Mandrakesoft.com 2.4.3-19mdk ))
1:调节服务器参数
用shell>mysqld-help这个命令声厂一张所有mysql选项和可配置变量的表.输出以下信息:
< |
|
[MySQL]mysql数据库连接过多的错误,可能的原因分析及解决办法 软件技术
lhwork 发表于 2006/12/20 9:38:00 |
系统不能连接数据库,关键要看两个数据: 1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。 2、数据库当前的连接线程数threads_connected。这是动态变化的。 查看max_connections、max_connections的办法见后。 如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。 因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。 但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。 这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。 该
错误的简便 |
|
[J2SE]使用过滤器使您的 JSP 具有 HTTP 压缩功能 软件技术
lhwork 发表于 2006/12/20 9:15:58 |
使用过滤器使您的 JSP 具有 HTTP 压缩功能
2005年10月16日星期日 by BeanSoft
HTTP
压缩是指浏览器能够理解压缩过的 HTML 代码, 文本文档等, 从而减少网络传输流量的一种功能. 在目前的大部分主流浏览器上,
都支持这种功能, 例如 Ineternet Explorer, FireFox, Netscape, Opera 等, 对应的 HTTP
版本应该是 HTTP 1.1.
要探测浏览器是否支持 HTTP 压缩, 只要查看浏览器请求的头中是否有如下字样: Accept-Encoding: gzip, deflate 即
可, 这个即是说明浏览器支持 gzip 和 deflate(一种压缩格式)的压缩内容. 这就意味着: 可以向浏览器返回默认的未压缩的文本,
也可以用 GZIP 和 deflate 压缩过后传送给它, 浏览器会自己探测这些内容并解压缩, 这就以为着传输某些资料的时候(例如文本的
HTML 代码)可以大大减少网络需要传送的内容数.
|
|
[设计模式]Java中的模式 --- 双重接口的实现,备忘录模式 软件技术
lhwork 发表于 2006/12/19 9:56:41 |
一、定义:备忘录(memento)模式又叫快照(snapshot)模式或者token模式,主要功能: 备忘录模式是用一个对象来存储另外一个对象的内部状态的快照,实现备忘录模式的关键点是在不破坏封装的 情况下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在合适的时候,把这个对象还原。 说明:备忘录模式适模式中比较好理解的一个,这里就不举例子,但是备忘录模式是模式中实现比较难,或者说 实现比较巧的,这里主要说说。 二、备忘录模式的实现 1,备忘录模式中的角色 发起人:创建含有内部状态的备忘录对象,并使用备忘录对象存储状态 负责人:负责人保存备忘录对象,但不检查备忘录对象的内容 备忘录:备忘录对象将发起人对象的内部状态存起来,并保正其内容不被发起人对象之外的对象像读取 注意:在备忘录的角色中,定义了他必须对不同的人提供不同的接口,对发起人提供宽接口,对其它任何人提供窄 接口。也许你说我都提供宽接口得了。对这也是备忘录的一种实现,叫做白箱备忘录,不过这种方法的封装没有设计 好,安全性不够好。 2 |
|
[设计模式]重载overloading和覆写overriding哪个更早执行-- visitor帮助篇 软件技术
lhwork 发表于 2006/12/19 9:41:50 |
重载overloading和覆写overriding哪个更早执行-- visitor帮助篇 一:问题提出 虽然我们经常写程序用到重载和覆写,但是很少会考虑他们的执行顺序。下边的内容就是关于,他们同时出现时 哪个先起作用: 二:问题分析 Java是"动态单分派静态多分派语言",这个定义已经多次提起,如果你不了解这些概念,看这里"visitor模式准备" 所以就注定了重载(静态多分派)要早于覆写(动态单分派),因为静态分派是编绎期实现的,动态分派是执行期实现的。 三:验证 简单验证一下,顺变提高记忆
1 |
|
|