本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7566963
建立时间: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的研究,他们解释了为什么拙劣的物理设计是数据库停机(无论是有计划的还是没计划的)背后的主要原因。这么多年都过来


阅读全文(1500) | 回复(0) | 编辑 | 精华 | 删除
 


[MySQL]MySQL查询优化系列讲座之调度和锁定
软件技术

lhwork 发表于 2006/12/20 10:30:54

前面的部分主要是聚焦于如何让单独的查询执行的速度更快。MySQL还允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样 单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。这一部分讲解MySQL的默认的调度策略和可以用来影响这些 策略的选项。它还谈到了并发性插入操作的使用和存储引擎锁定层次对客户端的并发性的影响。为了讨论的方便,我们把执行检索(SELECT)的客户端称为" 读取者",把执行修改操作(DELETE、INSERT、REPLACE或UPDATE)的客户端称为"写入者"。   MySQL的默认的调度策略可用总结如下:

  · 写入操作优先于读取操作。

  · 对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。

  · 对某张数据表的多个读取操作可以同时地进行。

   MyISAM和MEMORY存储引擎借助于数据表锁来实现这样的调度策略。当客户端访问某张表的时候,首先必须获取它的锁。当客户端完成对表的操作的时


阅读全文(2424) | 回复(0) | 编辑 | 精华 | 删除
 


[MySQL]MySQL查询优化系列讲座之数据类型与效率
软件技术

lhwork 发表于 2006/12/20 10:30:27

这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导:   在可以使用短数据列的时候就不要用长的。如果你有一个固定长度的CHAR数据列,那么就不要让它的长度超出实际需要。如果你在数据列中存储的最 长的值有40个字符,就不要定义成CHAR(255),而应该定义成CHAR(40)。如果你能够用MEDIUMINT代替BIGINT,那么你的数据表 就小一些(磁盘I/O少一些),在计算过程中,值的处理速度也快一些。如果数据列被索引了,那么使用较短的值带来的性能提高更加显著。不仅索引可以提高查 询速度,而且短的索引值也比长的索引值处理起来要快一些。

  如果你可以选择数据行的存储格式,那么应该使用最适合存储引擎的那种。对于 MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列。例如,让所有的字符列用CHAR类型代替VARCHAR类型。权衡得失,我们会发现 数据表使用了更多的磁盘空间,但是如果你能够提供额外的空间,那么固定长度的数据行被处理的速度比可变长度的数据行要快一些。对于那些被频繁修改的表来 说,这一点尤其突出,因为在那些情

阅读全文(1319) | 回复(0) | 编辑 | 精华 | 删除
 


[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查询的一些信息。如果要使用

阅读全文(1446) | 回复(0) | 编辑 | 精华 | 删除
 


[MySQL]MySQL查询优化技术系列讲座之使用索引
软件技术

lhwork 发表于 2006/12/20 10:28:54

索引是提高查询速度的最重要的工具。当然还有其它的一些技术可供使用,但是一般来说引起最大性能差异的都是索引的正确使用。在MySQL邮件列表 中,人们经常询问那些让查询运行得更快的方法。在大多数情况下,我们应该怀疑数据表上有没有索引,并且通常在添加索引之后立即解决了问题。当然,并不总是 这样简单就可以解决问题的,因为优化技术本来就并非总是简单的。然而,如果没有使用索引,在很多情况下,你试图使用其它的方法来提高性能都是在浪费时间。 首先使用索引来获取最大的性能提高,接着再看其它的技术是否有用。

  这一部分讲述了索引 是什么以及索引是怎么样提高查询性能的。它还讨论了在某些环境中索引可能降低性能,并为你明智地选择数据表的索引提供了一些指导方针。在下一部分中我们将 讨论MySQL查询优化器,它试图找到执行查询的效率最高的方法。了解一些优化器的知识,作为对如何建立索引的补充,对我们是有好处的,因为这样你才能更 好地利用自己所建立的索引。某些编

阅读全文(1423) | 回复(0) | 编辑 | 精华 | 删除
 


[MySQL]MySQL查询优化讲座之管理员的优化措施
软件技术

lhwork 发表于 2006/12/20 10:14:32

  前面的部分中讲解的优化措施都是没有特权的MySQL用户能够执行的。可以控制MySQL服务器或计算机的系统管理员能够执行额外的优化措施。 例如,有些服务器参数附属于查询处理过程,并且是可以调整的,而且某些硬件配置因素对查询处理速度有直接的影响。在很多情况下,这些优化措施提高了整个服 务器的性能,因此可以让所有的MySQL用户都受益。

  一般来说,当你执行管理员优化的时候,应该紧记以下规则:

  · 访问内存中的数据快于访问磁盘上的数据。

  · 尽量把数据保存在内存中可以减少磁盘操作。

  · 保留索引中的信息比保留数据记录的内容更重要。

  我们在后面将讨论如何应用这些规则。

   增加服务器缓存的大小。服务器拥有很多参数(系统变量),你可以改变这些参数来影响服务器的操作。其中的几个参数直接地影响查询处理的速度。你可以改变 的最重要的参数是数据表缓存的大小和存储引擎用于缓冲索引操作信息的缓存大小。如果你拥有可用的内存,就把它分配给服务器的缓存,以允许信息存储在内存中 并减少磁盘操作

阅读全文(1986) | 回复(0) | 编辑 | 精华 | 删除
 


[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选项和可配置变量的表.输出以下信息: <

阅读全文(1395) | 回复(0) | 编辑 | 精华 | 删除
 


[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 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。 因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。 但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。 这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。
该 错误的简便

阅读全文(2997) | 回复(0) | 编辑 | 精华 | 删除
 


[MySQL]MySQL服务维护笔记
软件技术

lhwork 发表于 2006/12/15 9:56:49

转自:http://www.chedong.com/tech/mysql.html作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com内 容摘要:使用MySQL服务的一些经验,主要从以下几个方面考虑的MySQL服务规划设计。对于高负载站点来说PHP和MySQL运行在一起(或者说任何 应用和数据库运行在一起的规划)都是性能最大的瓶颈,这样的设计有如让人一手画圆一手画方,这样2个人的工作效率肯定不如让一个人专门画圆一个人专门画方 效率高,让应用和数据库都跑在一台高性能服务器上说不定还不如跑在2台普通服务器上快。
以下就是针对MySQL作为专门的数据库服务器的优化建议:MySQL服务的安装/配置的通用性; 系统的升级和数据迁移方便性; 备份和系统快速恢复; 数据库应用的设计要点;

阅读全文(1417) | 回复(0) | 编辑 | 精华 | 删除
 


[MySQL]mysql集群技术
软件技术

lhwork 发表于 2006/8/21 13:38:03

1 环境描述
Mysql manager 节点:192.168.0.1

MysqlServer节点:192.168.0.100

Mysql 节点:192.168.0.160

Mysql 节点:192.168.0.161


说明:至少需要四台服务器才可以做mysql的集群。建议5台,再增加一台MysqlServer。

2       安装mysql二进制包
2.1   安装之前的准备工作
下载mysql-max-4.1.13-pc-linux-gnu-i686.tar.gz包

(注意:可以做集群的mysql都是mysql-max的,下载地点www.mysql.org)

#groupadd mysql

#useradd -g mysql mysql

阅读全文(3467) | 回复(0) | 编辑 | 精华 | 删除
 


« 1 2 3 4 5 6 7 8 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.125 second(s), page refreshed 144768382 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号