首页 > 编程技术 > php

MySQL手册版本 5.0.20-MySQL优化(四) (1)(2)

发布时间:2016-11-25 16:41



想要提高 ORDER BY 的速度,首先要看MySQL能否使用索引而非额外的排序过程。如果不能使用索引,可以试着遵循以下策略:


增加 sort_buffer_size 的值。


增加 read_rnd_buffer_size 的值。


修改 tmpdir,让它指向一个有很多剩余空间的专用文件系统。如果使用MySQL 4.1或更新,这个选项允许有多个路径用循环的格式。各个路径之间在 Unix 上用冒号(':')分隔开来,在 Windows,NetWare以及OS/2 上用分号(';')。可以利用这个特性将负载平均分摊给几个目录。注意:这些路径必须是分布在不同物理磁盘上的目录,而非在同一个物理磁盘上的不同目录。


默认情况下,MySQL也会对所有的 GROUP BY col1, col2, ... 查询做排序,跟 ORDER BY col1, col2, ... 查询一样。如果显式地包含一个有同样字段列表的 ORDER BY 分句,MySQL优化它的时候并不会损失速度,因为排序总是会发生。如果一个查询中包括 GROUP BY,但是想要避免对结果排序的开销,可以通过使用 ORDER BY NULL 来取消排序。例如:


INSERT INTO foo

SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;


7.2.10 MySQL 如何优化 LIMIT


在一些情况下,MySQL在碰到一个使用 LIMIT row_count 但没使用 HAVING

的查询时会做不同的处理:


如果只是用 LIMIT 来取得很少的一些记录, MySQL 有时会使用索引,但是更通常的情况是做一个全表扫描。


如果 LIMIT row_count 和 ORDER BY 一起使用,则MySQL在找到 row_count 条记录后就会停止排序了,而非对整个表进行排序。




7.2.12 加速 INSERT


插入一条记录花费的时间由以下几个因素决定,后面的数字大致表示影响的比例:


连接:(3)


发送查询给服务器:(2)


解析查询:(2)


插入记录:(1 x 记录大小)


插入索引:(1 x 索引数量)


关闭:(1)


这里并没有考虑初始化时打开数据表的开销,因为每次运行查询只会做这么一次。


如果是 B-tree 索引的话,随着索引数量的增加,插入记录的速度以 log N 的比例下降。


可以使用以下几种方法来提高插入速度:


如果要在同一个客户端在同一时间内插入很多记录,可以使用 INSERT 语句附带有多个 VALUES 值。这种做法比使用单一值的 INSERT 语句快多了(在一些情况下比较快)。如果是往一个非空的数据表里增加记录,可以调整变量 bulk_insert_buffer_size 的值使之更快。详情请看"5.2.3 Server System Variables"。


如果要从不同的客户端中插入大量记录,使用 INSERT DELAYED 语句也可以提高速度。详情请看"14.1.4 INSERT Syntax"。


对 MyISAM 而言,可以在 SELECT 语句正在运行时插入记录,只要这时候没有正在删除记录。


想要将一个文本文件加载到数据表中,可以使用 LOAD DATA INFILE。这通常是使用大量 INSERT 语句的20倍。详情请看"14.1.5 LOAD DATA INFILE Syntax"。

安装、卸载mysql服务


安装mysql服务

新建并编辑内容如下的一个bat文件,执行之(e:mysqlinmysqld-nt.exe为安装目录,按实际情况填写)

@ECHO OFF

e:mysqlinmysqld-nt.exe -install

net start mysql



卸载mysql服务

新建并编辑内容如下的一个bat文件执行之(e:mysqlinmysqld-nt.exe为安装目录,按实际情况填写)

@ECHO OFF

net stop mysql

c:mysqlinmysqld-nt.exe -remove




--------------------------------------------


MYSQL启动不了的问题.具体表现如下:不管是直接双击mysqld.exe还是在命令提示符不都是没反应.(XP系统)


然后尝试 控制面板 >>> 管理工具 >>> 服务 >>> mysql 方法启动,弹出提示框就进程意外终止.郁闷了......


只好卸载了mysql重装,结果发现问题没解决.去请教别人竟得到重装系统的提示.开始抓狂了......



好了,痛苦的回忆就到这里,现在讲怎么解决.


首先是要卸载mysql服务,不然就算卸载了mysql程序,服务中依然有mysql这项,问题就解决不了.假设我的mysql装在C:MYSQL,在命令提示符c:mysqlin下运行mysqld-nt -remove(中间有空格),会提示卸载成功.然后再在 控制面板 >>> 添加或删除程序 中卸载mysql,之后重启,再装上mysql运行mysqld.exe(win2000下是mysqld-nt.exe),命令提示符框一闪而过,这样你这可以在任务管理器中看到mysql这个进程了,也就是说你的mysql又复活了: )

在你从电脑里卸载旧的MYSQL数据库服务时,首先先在WINDOWS服务里停掉MYSQL的服务。再到控制面板里的增加删除程序内进行删除,但是你并不能完整的把MYSQL服务删除,那么就要在注册表里清除你的MYSQL服务。
  有几个地方:
  1、HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesEventlogApplicationMySQL 目录删除
  2、HKEY_LOCAL_MACHINESYSTEMControlSet002ServicesEventlogApplicationMySQL 目录删除
  3、HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationMySQL 目录删除
  如下图所示:


(T114)

五. 关于mysql-front的使用

  我找了好几个mysql的界面工具,觉得最简洁方便还是mysql-front,可惜的是要收费,不过还好有试用期,呵呵,可以先感受感受一下,最重要一点是mysql-front有简体中文版的,英文不好的我用起来就舒服多了.下面简单说说使用吧.

  首先,安装就不用说了,有向导,而且很简单.安装好后第一次运行时会跳出来一个要求添加对话的框,在这里你可以添加例如上面已经设定好的shujuku,过程如下:
  当你在注册的复选框里填上你在上面mysql设定好的用户名和密码后,在选择数据库框里就有shujuku 的数据库了,选上,按确定.进入mysql-fron后,你就会看到下面的界面,这是你就可以进行操作了.

  要说明的是,你还可以把root用户也加进去,这要你在mysql-fron的界面上选设置->对话->新建,再按上面进行就可以,出了root你还可以加入更多的用户,方法还是一样的,设置不同的用户,是方便对不同数据库进行管理,呵呵,root是权限最高的,可不要随便让别人使用你的root用户,保正你数据库的安全.

  六. JSP连接mysql
  现在就是尝试用jsp连接mysql了
  我在eclipse里建了个test_mysql.jsp页面,代码如下:



标签:[!--infotagslink--]

您可能感兴趣的文章: