当前位置:首页 » 硬盘大全 » 日志缓存空间调成4m或16m
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

日志缓存空间调成4m或16m

发布时间: 2022-05-06 02:12:44

Ⅰ mysql中哪种日志不能直接cat或more

前言

MySQL中有以下日志文件,分别是:

1:重做日志(redo log)

2:回滚日志(undo log)

3:二进制日志(binlog)

4:错误日志(errorlog)

5:慢查询日志(slow query log)

6:一般查询日志(general log)

7:中继日志(relay log)。

其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。

一、重做日志(redo log)

作用:

确保事务的持久性。redo日志记录事务执行后的状态,用来恢复未写入data file的已成功事务更新的数据。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。

内容:

物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。

什么时候产生:

事务开始之后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redo log文件中。

什么时候释放:

当对应事务的脏页写入到磁盘之后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)。

对应的物理文件:

默认情况下,对应的物理文件位于数据库的data目录下的ib_logfile1&ib_logfile2

innodb_log_group_home_dir 指定日志文件组所在的路径,默认./ ,表示在数据库的数据目录下。

innodb_log_files_in_group 指定重做日志文件组中文件的数量,默认2

关于文件的大小和数量,由以下两个参数配置:

innodb_log_file_size 重做日志文件的大小。

innodb_mirrored_log_groups 指定了日志镜像文件组的数量,默认1

其他:

很重要一点,redo log是什么时候写盘的?前面说了是在事物开始之后逐步写盘的。

之所以说重做日志是在事务开始之后逐步写入重做日志文件,而不一定是事务提交才写入重做日志缓存,原因就是,重做日志有一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大小为8M(这里设置的16M),Innodb存储引擎先将重做日志写入innodb_log_buffer中。

然后会通过以下三种方式将innodb日志缓冲区的日志刷新到磁盘

Master Thread 每秒一次执行刷新Innodb_log_buffer到重做日志文件。

每个事务提交时会将重做日志刷新到重做日志文件。

当重做日志缓存可用空间 少于一半时,重做日志缓存被刷新到重做日志文件

由此可以看出,重做日志通过不止一种方式写入到磁盘,尤其是对于第一种方式,Innodb_log_buffer到重做日志文件是Master Thread线程的定时任务。

因此重做日志的写盘,并不一定是随着事务的提交才写入重做日志文件的,而是随着事务的开始,逐步开始的。

另外引用《MySQL技术内幕 Innodb 存储引擎》(page37)上的原话:

即使某个事务还没有提交,Innodb存储引擎仍然每秒会将重做日志缓存刷新到重做日志文件。

这一点是必须要知道的,因为这可以很好地解释再大的事务的提交(commit)的时间也是很短暂的。

二、回滚日志(undo log)

作用:

保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

内容:

逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。

什么时候产生:

事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来保证undo log的可靠性

什么时候释放:

当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo log的日志空间。

对应的物理文件:

MySQL5.6之前,undo表空间位于共享表空间的回滚段中,共享表空间的默认的名称是ibdata,位于数据文件目录中。

MySQL5.6之后,undo表空间可以配置成独立的文件,但是提前需要在配置文件中配置,完成数据库初始化后生效且不可改变undo log文件的个数

如果初始化数据库之前没有进行相关配置,那么就无法配置成独立的表空间了。

关于MySQL5.7之后的独立undo 表空间配置参数如下:

innodb_undo_directory = /data/undospace/ –undo独立表空间的存放目录 innodb_undo_logs = 128 –回滚段为128KB innodb_undo_tablespaces = 4 –指定有4个undo log文件

如果undo使用的共享表空间,这个共享表空间中又不仅仅是存储了undo的信息,共享表空间的默认为与MySQL的数据目录下面,其属性由参数innodb_data_file_path配置。

其他:

undo是在事务开始之前保存的被修改数据的一个版本,产生undo日志的时候,同样会伴随类似于保护事务持久化机制的redolog的产生。

默认情况下undo文件是保持在共享表空间的,也即ibdatafile文件中,当数据库中发生一些大的事务性操作的时候,要生成大量的undo信息,全部保存在共享表空间中的。

因此共享表空间可能会变的很大,默认情况下,也就是undo 日志使用共享表空间的时候,被“撑大”的共享表空间是不会也不能自动收缩的。

因此,mysql5.7之后的“独立undo 表空间”的配置就显得很有必要了。

三、二进制日志(binlog):

作用:

用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。

用于数据库的基于时间点的还原。

内容:

逻辑格式的日志,可以简单认为就是执行过的事务中的sql语句。

但又不完全是sql语句这么简单,而是包括了执行的sql语句(增删改)反向的信息,也就意味着delete对应着delete本身和其反向的insert;update对应着update执行前后的版本的信息;insert对应着delete和insert本身的信息。

在使用mysqlbinlog解析binlog之后一些都会真相大白。

因此可以基于binlog做到类似于oracle的闪回功能,其实都是依赖于binlog中的日志记录。

什么时候产生:

事务提交的时候,一次性将事务中的sql语句(一个事物可能对应多个sql语句)按照一定的格式记录到binlog中。

这里与redo log很明显的差异就是redo log并不一定是在事务提交的时候刷新到磁盘,redo log是在事务开始之后就开始逐步写入磁盘。

因此对于事务的提交,即便是较大的事务,提交(commit)都是很快的,但是在开启了bin_log的情况下,对于较大事务的提交,可能会变得比较慢一些。

这是因为binlog是在事务提交的时候一次性写入的造成的,这些可以通过测试验证。

什么时候释放:

binlog的默认是保持时间由参数expire_logs_days配置,也就是说对于非活动的日志文件,在生成时间超过expire_logs_days配置的天数之后,会被自动删除。

对应的物理文件:

配置文件的路径为log_bin_basename,binlog日志文件按照指定大小,当日志文件达到指定的最大的大小之后,进行滚动更新,生成新的日志文件。

对于每个binlog日志文件,通过一个统一的index文件来组织。

其他:

二进制日志的作用之一是还原数据库的,这与redo log很类似,很多人混淆过,但是两者有本质的不同

作用不同:redo log是保证事务的持久性的,是事务层面的,binlog作为还原的功能,是数据库层面的(当然也可以精确到事务层面的),虽然都有还原的意思,但是其保护数据的层次是不一样的。

内容不同:redo log是物理日志,是数据页面的修改之后的物理记录,binlog是逻辑日志,可以简单认为记录的就是sql语句

另外,两者日志产生的时间,可以释放的时间,在可释放的情况下清理机制,都是完全不同的。

恢复数据时候的效率,基于物理日志的redo log恢复数据的效率要高于语句逻辑日志的binlog

关于事务提交时,redo log和binlog的写入顺序,为了保证主从复制时候的主从一致(当然也包括使用binlog进行基于时间点还原的情况),是要严格一致的,MySQL通过两阶段提交过程来完成事务的一致性的,也即redo log和binlog的一致性的,理论上是先写redo log,再写binlog,两个日志都提交成功(刷入磁盘),事务才算真正的完成。

四、错误日志
错误日志记录着mysqld启动和停止,以及服务器在运行过程中发生的错误的相关信息。在默认情况下,系统记录错误日志的功能是关闭的,错误信息被输出到标准错误输出。
指定日志路径两种方法:
编辑my.cnf 写入 log-error=[path]
通过命令参数错误日志 mysqld_safe –user=mysql –log-error=[path] &

显示错误日志的命令(如下图所示)

Ⅱ 何为虚拟内存有何作用设定大小是多少最好

虚拟内存的合理设置

现在内存的价钱越来越便宜,很多新装机的朋友都已经在使用1GB的内存,而还有很多人也在给老电脑的内存升级。在升级了物理内存之后,如何有效设置虚拟内存才能获得最大限度的性能提升?网上流传的一些优化虚拟内存的方法真的有效吗?这些就是本文将要讨论的内容。

网上有很多广泛流传的关于虚拟内存优化的技巧,其实很多都是经不起推敲的。大家一起来看看吧。

观点一:对于拥有大容量物理内存的用户,可以完全禁用虚拟内存。要彻底了解这个问题,首先得明白什么是虚拟内存,以及虚拟内存有什么作用。在早期,因为内存价格非常昂贵,因此一般电脑上都不会配置太多,那么有时候如果操作系统和应用程序需要的内存数量超过了计算机中安装的物理内存数量,操作系统就会暂时将不需要访问的数据通过一种叫做“分页”的操作写入到硬盘上一个特殊的文件中,从而给需要立刻使用内存的程序和数据释放内存。这个位于硬盘上的特殊文件就是分页文件(也就是虚拟内存文件或叫做交换文件)。对于Windows 2000/XP/2003操作系统,分页文件名为pagefile.sys,默认情况下位于操作系统所在分区的根目录下。

既然知道了虚拟内存的由来和作用,那么持这种理论的人认为,硬盘和内存的速度具有天壤之别,如果禁用了虚拟内存,系统就不需要花时间将内存中的数据分页到硬盘上,从而提高了系统的运行效率。然而根据传统的设计,Windows 的许多核心功能都需要使用分页文件,而如果你禁用了所有分页文件,有些第三方的应用软件都可能会遇到内存不足的错误。其实在不需要的时候,Windows并不会使用分页文件,因此这样调整系统你并不能获得任何性能上的提高。

观点二:对于虚拟内存,建议的设置是物理内存数量的1.5-2倍(分别为虚拟内存的最小值和最大值)。在讨论这个问题之前首先看两种情况:有两台电脑,除了内存,其他所有配置都相同。电脑A拥有128MB内存,电脑B拥有1GB内存,这两台电脑都运行Windows XP操作系统。按照这个观点的方法设置,电脑A的虚拟内存将会设置为192MB-256MB,而电脑B的虚拟内存将会设置为1.5GB-2GB。那么实际使用中呢,电脑A很可能会在运行大型软件或者游戏的时候产生虚拟内存不足的问题,而电脑B则会因为设置了如此大的分页文件而导致硬盘空间的浪费。如何根据实际情况设置虚拟内存,这个我们会在下文中介绍。

观点三:我们可以使用内存释放软件将运行中的程序占用的内存释放出来,提高系统运行效率。在否定这个观点之前我们首先要明白一件事,任何程序,只要被执行,就会占用一定的内存空间(具体占用多少内存则取决于程序自己的体积以及载入的数据文件的大小),那么这种所谓的内存释放软件是如何生效的?软件并没有退出,从哪里释放内存呢?原来这种“优化”软件会把程序占用的内存全部分页到虚拟内存中,从而造成了物理内存被释放的“假象”。

安装有这类软件的朋友可以试试看,打开Windows任务管理器,打开进程选项卡,接着在“查看”菜单下选择“选择列”命令,在随后出现的选择列对话框中选中“虚拟内存大小”这一选项。接着你的任务管理器将会变成类似图一的样子。

记住几个占用内存比较多的进程各自使用的内存数和虚拟内存数,然后使用内存释放软件进行释放。本文将会使用微软发布的Windows Server 2003 Resource Kit工具empty.exe,该工具前段时间在网上非常风光,很多人都宣称具有释放空闲内存的作用(虽然还有其他释放内存的工具,不过原理上都是一样的)。运行“empty *.*”,可以看到,在短时间内,之前占用了大量物理内存的进程占用的物理内存数量都变得很少,而虚拟内存用量增加了(图二),但是这种现象只持续了很短的时间。马上,这些进程占用的物理内存数量又开始回升了。

因此可以说,这类释放内存的软件根本没有太大作用。相反,有些软件可以在内存占用达到一定程序之后自动释放内存,这可能会对本身就已经很繁忙的计算机雪上加霜。想象这种情况,当你内存数量不多,而又运行了比较大型的程序后,必然导致物理内存数急剧减少,而在这种情况下所谓的“优化软件”开始自作聪明,把占用内存的数据往硬盘上进行分页,而程序的运行需要这些数据,这可能导致了在同一时间内,“优化软件”试图将数据分页到硬盘,而操作系统试图将数据从硬盘读取到内存,极大增加了硬盘的读写。

其实在早期,这类程序还是有一定作用的,那时候主流的Windows 9x操作系统本身在内存管理上存在问题,而且有些设计不严谨的程序也可能存在内存泄露的Bug,因此这类软件应运而生。但是现在基于NT技术的Windows操作系统在内存管理上得到了极大提高,同时大部分软件的设计也越来越合理,因此我们完全可以和这类软件说再见了。

说了这么多网上流传的错误观点,那么我们该怎样设置才能达到最佳性能呢?

首先看看如何确定虚拟内存的大小。在前面我们已经说过了,严格按照1.5-2倍的倍数关系来设置并不科学,因此我们可以根据系统的实际应用情况进行设置。在这过程中需要用到Windows 2000/XP Pro/2003自带的性能监视器。

运行“perfmon.msc”打开性能监视器,展开左侧的性能日志和警报,并点击选择记数器日志,在右侧的面板中空白处点击鼠标右键,选择新建日志设置,并命名为Pagefile,然后回车确认,然后会出现图三所示的窗口。

在常规选项卡下,点击添加记数器按钮,在新弹出的窗口的性能对象下拉菜单中选择Paging File,并选择“从列表选择记数器”,然后点击% Usage Peak,在范例中选择“_Total”,并接着点击“添加”按钮,完成的设置应该跟图四一样。

然后关闭这个窗口,并点击图三中的“确定”按钮。点击“是”创建日志文件。接着打开“日志文件”选项卡,在日志文件类型下拉菜单中选则“文本文件(逗号分隔)”,然后记住“例如”框中显示的日志文件的路径。

这样,点击确定后这个记数器已经开始运行了,你可以在电脑上进行你的日常操作,并尽可能多的打开和关闭各种经常使用的应用程序和游戏。经过几个小时的使用,基本上记数器已经可以对你的使用情况做出一个完整的评估。

这时你需要先停止这个记数器的运行,同样是在记数器日志窗口中,选中我们新建的Page File记数器,然后右键点击,并且选择停止。用记事本打开日志文件,你看到的结果应该跟图六类似。我们根据这幅图一起来分析一下分页文件的使用。

需要注意的是,在日志中的数值并不是分页文件的使用量,而是使用率。也就是说,根据日志文件的显示,该系统一般情况下的分页文件只使用了25%左右,而系统当前设置的分页文件足有2GB,那么为了节省硬盘空间,完全可以把分页文件最大值缩小为512MB大小。而对于最小值,可以先根据日志中的占用率求出平均占用率,然后再与最大值相乘,就可以得到了。

在设置虚拟内存的时候还需要注意,如果你有超过一块硬盘,那么最好能把分页文件设置在没有安装操作系统或应用程序的硬盘上,或者所有硬盘中速度最快的硬盘上。这样在系统繁忙的时候才不会产生同一个硬盘既忙于读取应用程序的数据又同时进行分页操作的情况。相反,如果应用程序和分页文件在不同的硬盘上,这样才能最大程度降低硬盘利用率,同时提高效率。当然,如果你只有一个硬盘,就完全没必要将分页文件设置在其他分区了,同一个硬盘上不管设置在哪个分区中,对性能的影响都不是很大。

虚拟内存的设置并不麻烦,但是要用好虚拟内存却还有很多事情需要注意。

我们已经知道,操作系统运行的过程中会把内存中的一些数据分页到硬盘上,但是默认情况下,系统关闭的时候,这些数据并不会被自动删除。因此,如果你在电脑上处理了机密数据,随后你可能使用加密,或者将数据转移到其他介质上的方法保证了其他人无法读取机密文件的内容。但是你可能忘了,在分页文件中可能还遗留有该文件的某些数据,而借助专用的程序,任何人都可以分析分页文件,从中读出保存的数据。因此为了实现最大程度的安全,我们最好通过设置让Windows在关闭的时候自动删除分页文件(这不是一般意义的删除,而是使用无意义的数据填充整个分页文件,这样即便使用反删除软件也无法恢复)。运行Gpedit.msc打开组策略编辑器,在左侧面板中定位到“计算机配置/Windows设置/安全设置/本地策略/安全选项”,然后启用右侧面板中“关机:清理虚拟内存页面文件”这一策略。不过要注意,启用该策略将会延长Windows关闭所需的时间,因此如果不是必要请不要启用该策略。

我们都知道硬盘使用时间长了将会出安生文件碎片,而碎片太多就会影响运行效率,因此最佳做法是定时整理硬盘碎片。不过你可能不知道,因为在Windows运行的情况下pagefile.sys文件会被锁定,因此该文件中的碎片并不会被整理。要整理分页文件中的碎片,我们有三种方法。

第一种方法虽然不需要任何额外的工具,不过操作上有点麻烦。假设你的操作系统和分页文件都位于C盘,首先请将分页文件移动到D盘或者E盘等非系统盘(为使设置生效,设置好之后需要重启动系统)。然后使用Windows自带的磁盘碎片整理程序对C盘整理磁盘碎片,你可能需要多次整理才能完成的比较彻底。待整理完之后重新将分页文件设置到C盘,因为C盘已经进行过了完整的碎片整理,因此重新在C盘创建的分页文件将会是连续的,也就避免了碎片的产生。

第二种方法使用简单,但是需要借助其他软件。这里我们使用的是一个叫“PageDefrag”的免费软件。该软件可以在这里下载:http://www.sysinternals.com/Utilities/PageDefrag.html ,运行之后将会看到图七所示界面。从图中可以看到,不仅pagefile.sys,该软件还可以整理很多其他平时因为被系统锁定而无法整理的系统文件。由于软件不能在系统运行的时候对分页文件进行独占性访问,因此整理工作会在下一次启动系统的时候进行。你可以按照需要,设置下次启动时整理(Defragment at next boot),或者每次启动时整理(Defragment every boot)。

最后,如果你使用第三方的磁盘碎片整理软件,例如O&O Defrag,那么这类软件自带的Offline Defrag(脱机整理,或者其他类似的称呼)也可以在系统重启动的时候整理这些被锁定的系统文件。

Ⅲ 我的笔记本电脑虚拟内存该怎么设置

工具/材料:电脑

1.点击我的电脑选择属性。

Ⅳ 硬盘缓存2M、4M、8M、16M 它们到底有多大差别

差别满大的。。缓存越大的硬盘速度也相应越快,所以推荐买大点的
不过一般买8M够了,同样的硬盘8M也只比2M贵200元左右

Ⅳ 闪存4M、8M、16M、32M、64M、都有什么区别

传输速度跟频率有关,并不是越大越快的,
4M,8M.....只是能存放的数据多一点而已,
但也不是越大越好,这根CPU带宽有关系,
一般32位CPU支持最大内存为4GB内存空间
64位则高达16777216TB是很大的一个范围
具体你可以在网络看一下
就像硬盘一样,越大可装的东西越多

Ⅵ 同样是320G 西数硬盘,8M缓存与16M缓存有多大区别。普通用户感觉的到吗

差别不太大,8M的已经够用了
16M的话就是临时的空间大一点,在下载或拷贝大文件时16M要快点。

Ⅶ 优化mysql 多大内存 centos6

一、mysql的优化思路
mysql的优化分为两方面:
1. 服务器使用前的优化
2. 服务使用中的优化
二、mysql的基础优化步骤
1. 硬件级优化
(1). 最好mysql自己使用一台物理服务器
(2). 内存和CPU方面,根据需求给予mysql服务器足够大的内存和足够多的CPU核数
(3). 避免使用Swap交换分区–交换时从硬盘读取的它的速度很慢,有的DBA安装系统时就不装swap分区
(4). 如果是mysql主库,硬盘可以选用比较好的高速硬盘,系统用SSD固态硬盘,数据盘用sas替代sata硬盘,将操作系统和数据分区分开
(5). mysql产生的日志与数据库也放到不同的磁盘分区上面
(6). mysql数据库硬盘格式化时,可以指定更小的硬盘块
(7). 关于做RAID方面,主库尽量做成RAID10,既提高了数据的读写速度也提到了数据的安全性
(8). 服务器双线双电,保障服务器运行稳定,不会因为突然断电影响业务和损坏磁盘数据
2. mysql数据库设计优化
(1). 根据需求选择正确的存储引擎,比如说读的特别猛就用MySAM,如果对事务性要求高就用InnoDB
(2). 设置合理的字段类型和字段长度,比如说你这个字段就20多个字段你设置成VARCHAR(255)就是对磁盘空间的浪费
(3). 默认值尽可能的使用 NOT NULL,如果空值太多对mysql的查询会有影响,尤其是在查询语句编写上面
(4). 尽量少的使用VARCHAR,TEXT,BLOB这三个字段
(5). 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]
(6). 不要滥用索引,大表索引,小表不索引
(7). 表的设计合理化(符合3NF)
3. mysql配置参数的优化
这里是mysql5.5版本的配置文件
vi my.cnf
[client]
port = 3306 #mysql客户端连接时的默认端口
socket = /tmp/mysql.sock #与mysql服务器本地通信所使用的socket文件路径
default-character-set = utf8 #指定默认字符集为utf8
[mysql]
no-auto-rehash #auto-rehash是自动补全的意思,就像我们在linux命令行里输入命令的时候,使用tab键的功能是一样的,这里是默认的不自动补全
default-character-set = utf8 #指定默认字符集为utf8
[mysqld]
user = mysql
port = 3306
character-set-server = utf8 #设置服务器端的字符编码
socket = /tmp/mysql.sock
basedir = /application/mysql
datadir = /mysqldata
skip-locking #避免MySQL的外部锁定,减少出错几率增强稳定性。
open_files_limit = 10240 #MySQL打开的文件描述符限制,默认最小1024;当open_files_limit没有被配置的时候,比较max_connections*5和ulimit -n的值,哪个大用哪个,当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个。
back_log = 500 #back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可 以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。 试图设back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
max_connections = 800 #MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多, 介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过’conn%’通配符查看当前状态的连接 数量,以定夺该值的大小。
max_connect_errors = 3000 #对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。
table_cache = 614 #物理内存越大,设置就越大.默认为2402,调到512-1024最佳
external-locking = FALSE #使用–skip-external-locking MySQL选项以避免外部锁定。该选项默认开启
max_allowed_packet =8M #设置最大包,限制server接受的数据包大小,避免超长SQL的执行有问题 默认值为16M,当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇“丢失与MySQL服务器的连接”错误。默认值16M。
sort_buffer_size = 6M #用于表间关联缓存的大小,查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
join_buffer_size = 6M #联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
thread_cache_size = 100 #服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求, 那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用
thread_concurrency = 8 #设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8,属重点优化参数
query_cache_size = 2M #指定MySQL查询缓冲区的大小,在数据库写入量或是更新量也比较大的系统,该参数不适合分配过大。而且在高并发,写入量大的系统,建系把该功能禁掉。
query_cache_limit = 1M #默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费
query_cache_min_res_unit = 2k #MySQL参数中query_cache_min_res_unit查询缓存中的块是以这个大小进行分配的,使用下面的公式计算查询缓存的平均大小,根据计算结果设置这个变量,MySQL就会更有效地使用查询缓存,缓存更多的查询,减少内存的浪费。
default_table_type = InnoDB #默认表的引擎为InnoDB
thread_stack = 192K #限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用transaction_isolation = READ-COMMITTED #设定默认的事务隔离级别.可用的级别如下:
READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE,1.READ UNCOMMITTED-读未提交2.READ COMMITTE-读已提交3.REPEATABLE READ -可重复读4.SERIALIZABLE -串行
tmp_table_size = 246M #tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。
max_heap_table_size = 246M #内存表,内存表不支持事务,内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制
long_query_time = 1 #记录时间超过1秒的查询语句
log_long_format #
log-error = /logs/error.log #开启mysql错误日志,该选项指定mysqld保存错误日志文件的位置
log-slow-queries = /logs/slow.log #慢查询日志文件路径
pid-file = /pids/mysql.pid
log-bin = /binlog/mysql-bin #binlog日志位置以及binlog的名称
relay-log = /relaylog/relay-bin #relaylog日志位置以名称
binlog_cache_size = 1M #binlog_cache_size 就是满足两点的:一个事务,在没有提交(uncommitted)的时候,产生的日志,记录到Cache中;等到事务提交(committed)需要提交的时候,则把日志持久化到磁盘,默认是32K。
max_binlog_cache_size = 32M #binlog缓存最大使用的内存
max_binlog_size = 2M #一个binlog日志的大小
expire_logs_days = 7 #保留7天的binlog
key_buffer_size = 124M #索引缓存大小: 它决定了数据库索引处理的速度,尤其是索引读的速度
read_buffer_size = 16M #MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能
read_rnd_buffer_size = 2M #MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大
bulk_insert_buffer_size = 1M #批量插入数据缓存大小,可以有效提高插入效率,默认为8M
myisam_sort_buffer_size = 1M #MyISAM表发生变化时重新排序所需的缓冲
myisam_max_sort_file_size = 10G #MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE). 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_repair_threads = 1 #如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.
myisam_recover #自动检查和修复没有适当关闭的 MyISAM 表
lower_case_table_names = 1 #让mysql不区分大小写
skip-name-resolve #禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
#slave-skip-errors = 1032,1062 #这是选填项让slave库跳过哪些错误继续同步
#replicate-ignore-db=mysql #选填,同步时候哪个数据库不同步设置
server-id = 1
innodb_additional_mem_pool_size = 4M #InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小。应用程序里的表越多,你需要在这里分配越多的内存,默认是2M
innodb_buffer_pool_size = 2048M #这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默 认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了
innodb_file_io_threads = 4 #文件IO的线程数,一般为 4
innodb_thread_concurrency = 8 #你的服务器CPU有几个就设置为几,建议用默认一般为8
innodb_flush_log_at_trx_commit = 2 #默认为1,如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。
innodb_log_buffer_size = 2M #此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间
innodb_log_file_size = 4M #此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
innodb_log_files_in_group = 3 #为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M
innodb_max_dirty_pages_pct = 90 #Buffer_Pool中Dirty_Page所占的数量,直接影响InnoDB的关闭时间。参数 innodb_max_dirty_pages_pct可以直接控制了Dirty_Page在Buffer_Pool中所占的比率,而且幸运的是 innodb_max_dirty_pages_pct是可以动态改变的。所以,在关闭InnoDB之前先调小,强制数据块Flush一段时间,则能够大大缩短MySQL关闭的时间。
innodb_lock_wait_timeout = 120 #InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)
innodb_file_per_table = 0 #独享表空间(关闭)
[mysqlmp]
quick
max_allowed_packet = 16M
4. 架构优化
(1). 前端用memcached,redis等缓存分担数据库压力
(2). 数据库读写分离,负载均衡
(3). 数据库分库分表
(4). 存储可采取分布式
5. 后期优化
主要是多观察,后期就是维护工作了,观察服务器负载是需要添加硬件了,还是有语句有问题啊,还是参数要修改了。
6. 查询优化(摘抄别人的)
63. 使用慢查询日志去发现慢查询。
64. 使用执行计划去判断查询是否正常运行。
65. 总是去测试你的查询看看是否他们运行在最佳状态下 –久而久之性能总会变化。
66. 避免在整个表上使用count(*),它可能锁住整张表。
67. 使查询保持一致以便后续相似的查询可以使用查询缓存。
68. 在适当的情形下使用GROUP BY而不是DISTINCT。
69. 在WHERE, GROUP BY和ORDER BY子句中使用有索引的列。
70. 保持索引简单,不在多个索引中包含同一个列。
71. 有时候MySQL会使用错误的索引,对于这种情况使用USE INDEX。
72. 检查使用SQL_MODE=STRICT的问题。
73. 对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR.
74. 为了 避免在更新前SELECT,使用INSERT ON DUPLICATE KEY或者INSERT IGNORE ,不要用UPDATE去实现。
75. 不要使用 MAX,使用索引字段和ORDER BY子句。
76. 避免使用ORDER BY RAND().
77。LIMIT M,N实际上可以减缓查询在某些情况下,有节制地使用。
78。在WHERE子句中使用UNION代替子查询。
79。对于UPDATES(更新),使用 SHARE MODE(共享模式),以防止独占锁。
80。在重新启动的MySQL,记得来温暖你的数据库,以确保您的数据在内存和查询速度快。
81。使用DROP TABLE,CREATE TABLE DELETE FROM从表中删除所有数据。
82。最小化的数据在查询你需要的数据,使用*消耗大量的时间。
83。考虑持久连接,而不是多个连接,以减少开销。
84。基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询。
85。当负载增加您的服务器上,使用SHOW PROCESSLIST查看慢的和有问题的查询。
86。在开发环境中产生的镜像数据中 测试的所有可疑的查询。

Ⅷ mariadb 如何实现服务器内存使用最大化

查询最高内存占用

使用以下命令可以知道mysql的配置使用多少 RAM

SELECT ( @@key_buffer_size
+ @@query_cache_size
+ @@innodb_buffer_pool_size
+ @@innodb_additional_mem_pool_size
+ @@innodb_log_buffer_size
+ @@max_connections * ( @@read_buffer_size
+ @@read_rnd_buffer_size
+ @@sort_buffer_size
+ @@join_buffer_size
+ @@binlog_cache_size
+ @@thread_stack
+ @@tmp_table_size
)
) / (1024 * 1024 * 1024) AS MAX_MEMORY_GB;

可以使用mysql计算器来计算内存使用

下面是理论,可以直接到推荐配置

如何调整配置

key_buffer_size(MyISAM索引用)

指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。为了最小化磁盘的 I/O , MyISAM 存储引擎的表使用键高速缓存来缓存索引,这个键高速缓存的大小则通过 key-buffer-size 参数来设置。如果应用系统中使用的表以 MyISAM 存储引擎为主,则应该适当增加该参数的值,以便尽可能的缓存索引,提高访问的速度。

怎么设

show global status like 'key_read%';

+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_read_requests | 27813678764 |
| Key_reads | 6798830 |
---------------------

  • key_buffer_size通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。

  • 比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好。

  • show global status like '%created_tmp_disk_tables%';

  • key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

  • 对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)

  • 另一个参考如下

  • show global status like 'key_blocks_u%';

  • +------------------------+-------------+

  • | Variable_name | Value |

  • +------------------------+-------------+

  • | Key_blocks_unused | 0 |

  • | Key_blocks_used | 413543 |

  • +------------------------+-------------+

  • Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数,比如这台服务器,所有的缓存都用到了,要么增加key_buffer_size,要么就是过渡索引了,把缓存占满了。比较理想的设置:

  • 可以根据此工式来动态的调整Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%

  • show engines;

  • 查询存储引擎

  • innodb_buffer_pool_size (innodb索引用)

    这个参数和MyISAM的key_buffer_size有相似之处,但也是有差别的。这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。

    该参数分配内存的原则:这个参数默认分配只有8M,可以说是非常小的一个值。

  • 如果是专用的DB服务器,且以InnoDB引擎为主的场景,通常可设置物理内存的50%,这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。

  • 如果是非专用DB服务器,可以先尝试设置成内存的1/4,如果有问题再调整

  • query_cache_size(查询缓存)

    缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询。显然,这对于频繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有大量相同sql查询的表,查询缓存会节约很大的性能。

  • 注意:如果你查询的表更新比较频繁,而且很少有相同的查询,最好不要使用查询缓存。因为这样会消耗很大的系统性能还没有任何的效果

  • 要不要打开?

    先设置成这样跑一段时间

  • query_cache_size=128M

  • query_cache_type=1

  • 看看命中结果来进行进一步的判断

  • mysql> show status like '%Qcache%';

  • +-------------------------+-----------+

  • | Variable_name | Value |

  • +-------------------------+-----------+

  • | Qcache_free_blocks | 669 |

  • | Qcache_free_memory | 132519160 |

  • | Qcache_hits | 1158 |

  • | Qcache_inserts | 284824 |

  • | Qcache_lowmem_prunes | 2741 |

  • | Qcache_not_cached | 1755767 |

  • | Qcache_queries_in_cache | 579 |

  • | Qcache_total_blocks | 1853 |

  • +-------------------------+-----------+8 rows in set (0.00 sec)

  • Qcache_free_blocks:表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,则说明查询缓存中的内存碎片过多了,可能在一定的时间进行整理。

    Qcache_free_memory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,DBA可以根据实际情况做出调整。

    Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。

    Qcache_inserts: 表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数,次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。

    Qcache_lowmem_prunes:该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小。

    Qcache_not_cached: 表示因为query_cache_type的设置而没有被缓存的查询数量。

    Qcache_queries_in_cache:当前缓存中缓存的查询数量。

    Qcache_total_blocks:当前缓存的block数量。

  • 我们可以看到现网命中1158,未缓存的有1755767次,说明我们这个系统命中的太少了,表变动比较多,不什么开启这个功能涉及参数

  • query_cache_limit:允许 Cache 的单条 Query 结果集的最大容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 Cache

  • query_cache_min_res_unit:设置 Query Cache 中每次分配内存的最小空间大小,也就是每个 Query 的 Cache 最小占用的内存空间大小

  • query_cache_size:设置 Query Cache 所使用的内存大小,默认值为0,大小必须是1024的整数倍,如果不是整数倍,MySQL 会自动调整降低最小量以达到1024的倍数

  • query_cache_type:控制 Query Cache 功能的开关,可以设置为0(OFF),1(ON)和2(DEMAND)三种,意义分别如下: 0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query Cache 1(ON):开启 Query Cache 功能,但是当 SELECT 语句中使用的 SQL_NO_CACHE 提示后,将不使用Query Cache 2(DEMAND):开启 Query Cache 功能,但是只有当 SELECT 语句中使用了 SQL_CACHE 提示后,才使用 Query Cache

  • query_cache_wlock_invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。

  • innodb_additional_mem_pool_size(InnoDB内部目录大小)

    InnoDB 字典信息缓存主要用来存放 InnoDB 存储引擎的字典信息以及一些 internal 的共享数据结构信息,也就是存放Innodb的内部目录,所以其大小也与系统中所使用的 InnoDB 存储引擎表的数量有较大关系。

    这个值不用分配太大,通常设置16M够用了,默认8M,如果设置的内存大小不够,InnoDB 会自动申请更多的内存,并在 MySQL 的 Error Log 中记录警告信息。

    innodb_log_buffer_size (日志缓冲)

    表示InnoDB写入到磁盘上的日志文件时使用的缓冲区的字节数,默认值为16M。一个大的日志缓冲区允许大量的事务在提交之前不用写日志到磁盘,所以如果有更新,插入或删除许多行的事务,则使日志缓冲区更大一些可以节省磁盘IO

    通常最大设为64M足够

    max_connections (最大并发连接)

    MySQL的max_connections参数用来设置最大连接(用户)数。每个连接MySQL的用户均算作一个连接,max_connections的默认值为100。

  • 这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;

  • 增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等;

  • 该参数设置过小的最明显特征是出现”Too many connections”错误

  • mysql> show variables like '%max_connect%';

  • +-----------------------+-------+

  • | Variable_name | Value |

  • +-----------------------+-------+

  • | extra_max_connections | 1 |

  • | max_connect_errors | 100 |

  • | max_connections | 2048 |

  • +-----------------------+-------+3 rows in set (0.00 sec)


  • mysql> show status like 'Threads%';

  • +-------------------+---------+

  • | Variable_name | Value |

  • +-------------------+---------+

  • | Threads_cached | 0 |

  • | Threads_connected | 1 |

  • | Threads_created | 9626717 |

  • | Threads_running | 1 |

  • +-------------------+---------+4 rows in set (0.00 sec)

  • 可以看到此时的并发数也就是Threads_connected=1,还远远达不到2048

  • mysql> show variables like 'open_files_limit';

  • +------------------+-------+

  • | Variable_name | Value |

  • +------------------+-------+

  • | open_files_limit | 65535 |

  • +------------------+-------+1 row in set (0.00 sec)

  • max_connections 还取决于操作系统对单进程允许打开最大文件数的限制

    也就是说如果操作系统限制单个进程最大可以打开100个文件

    那么 max_connections 设置为200也没什么用

    MySQL 的 open_files_limit 参数值是在MySQL启动时记录的操作系统对单进程打开最大文件数限制的值

    可以使用 show variables like 'open_files_limit'; 查看 open_files_limit 值

  • ulimit -n65535

  • 或者直接在 Linux 下通过ulimit -n命令查看操作系统对单进程打开最大文件数限制 ( 默认为1024 )

    connection级内存参数(线程独享)

    connection级参数,是在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存。

    排序性能

    mysql对于排序,使用了两个变量来控制sort_buffer_size和 max_length_for_sort_data, 不象oracle使用SGA控制. 这种方式的缺点是要单独控制,容易出现排序性能问题.

  • mysql> SHOW GLOBAL STATUS like '%sort%';

  • +---------------------------+--------+

  • | Variable_name | Value |

  • +---------------------------+--------+

  • | Sort_merge_passes | 0 |

  • | Sort_priority_queue_sorts | 1409 |

  • | Sort_range | 0 |

  • | Sort_rows | 843479 |

  • | Sort_scan | 13053 |

  • +---------------------------+--------+5 rows in set (0.00 sec)

  • 如果发现Sort_merge_passes的值比较大,你可以考虑增加sort_buffer_size来加速ORDER BY 或者GROUP BY 操作,不能通过查询或者索引优化的。我们这为0,那就没必要设置那么大。

  • 读取缓存

    read_buffer_size = 128K(默认128K)为需要全表扫描的MYISAM数据表线程指定缓存

    read_rnd_buffer_size = 4M:(默认256K)首先,该变量可以被任何存储引擎使用,当从一个已经排序的键值表中读取行时,会先从该缓冲区中获取而不再从磁盘上获取。

    大事务binlog

  • mysql> show global status like 'binlog_cache%';

  • +-----------------------+----------+

  • | Variable_name | Value |

  • +-----------------------+----------+

  • | Binlog_cache_disk_use | 220840 |

  • | Binlog_cache_use | 67604667 |

  • +-----------------------+----------+2 rows in set (0.00 sec)

  • Binlog_cache_disk_use表示因为我们binlog_cache_size设计的内存不足导致缓存二进制日志用到了临时文件的次数

  • Binlog_cache_use 表示 用binlog_cache_size缓存的次数

  • 当对应的Binlog_cache_disk_use 值比较大的时候 我们可以考虑适当的调高 binlog_cache_size 对应的值

  • 如上图,现网是32K,我们加到64K

  • join语句内存影响

    如果应用中,很少出现join语句,则可以不用太在乎join_buffer_size参数的设置大小。

    如果join语句不是很少的话,个人建议可以适当增大join_buffer_size到1MB左右,如果内存充足可以设置为2MB。

    线程内存影响

    Thread_stack:每个连接线程被创建时,MySQL给它分配的内存大小。当MySQL创建一个新的连接线程时,需要给它分配一定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各种状态和处理信息。

  • mysql> show status like '%threads%';

  • +-------------------------+---------+

  • | Variable_name | Value |

  • +-------------------------+---------+

  • | Delayed_insert_threads | 0 |

  • | Slow_launch_threads | 0 |

  • | Threadpool_idle_threads | 0 |

  • | Threadpool_threads | 0 |

  • | Threads_cached | 0 |

  • | Threads_connected | 1 |

  • | Threads_created | 9649301 |

  • | Threads_running | 1 |

  • +-------------------------+---------+8 rows in set (0.00 sec)


  • mysql> show status like 'connections';

  • +---------------+---------+

  • | Variable_name | Value |

  • +---------------+---------+

  • | Connections | 9649311 |

  • +---------------+---------+1 row in set (0.00 sec)

  • 如上:系统启动到现在共接受到客户端的连接9649311次,共创建了9649301个连接线程,当前有1个连接线程处于和客户端连接的状态。而在Thread Cache池中共缓存了0个连接线程(Threads_cached)。

    Thread Cache 命中率:

  • Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;

  • 一般在系统稳定运行一段时间后,Thread Cache命中率应该保持在90%左右才算正常。

    内存临时表

    tmp_table_size 控制内存临时表的最大值,超过限值后就往硬盘写,写的位置由变量 tmpdir 决定

    max_heap_table_size 用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。

    Order By 或者Group By操作多的话,加大这两个值,默认16M

  • mysql> show status like 'Created_tmp_%';

  • +-------------------------+-------+

  • | Variable_name | Value |

  • +-------------------------+-------+

  • | Created_tmp_disk_tables | 0 |

  • | Created_tmp_files | 626 |

  • | Created_tmp_tables | 3 |

  • +-------------------------+-------+3 rows in set (0.00 sec)

  • 如上图,写入硬盘的为0,3次中间表,说明我们的默认值足够用了

  • mariadb 推荐配置

  • 注意这里只推荐innodb引擎

  • 内存配置只关注有注释的行

  • [mysqld]

  • datadir=/var/lib/mysql

  • socket=/var/lib/mysql/mysql.sockdefault-storage-engine=INNODB


  • character-set-server=utf8

  • collation-server=utf8_general_ci


  • user=mysql

  • symbolic-links=0# global settings

  • table_cache=65535table_definition_cache=65535max_allowed_packet=4M

  • net_buffer_length=1M

  • bulk_insert_buffer_size=16M


  • query_cache_type=0 #是否使用查询缓冲,0关闭

  • query_cache_size=0 #0关闭,因为改表操作多,命中低,开启消耗cpu


  • # shared

  • key_buffer_size=8M #保持8M MyISAM索引用

  • innodb_buffer_pool_size=4G #DB专用mem*50%,非DB专用mem*15%到25%

  • myisam_sort_buffer_size=32M

  • max_heap_table_size=16M #最大中间表大小

  • tmp_table_size=16M #中间表大小


  • # per-thread

  • sort_buffer_size=256K #加速排序缓存大小

  • read_buffer_size=128k #为需要全表扫描的MYISAM数据表线程指定缓存

  • read_rnd_buffer_size=4M #已排序的表读取时缓存,如果比较大内存就到6M

  • join_buffer_size=1M #join语句多时加大,1-2M

  • thread_stack=256k #线程空间,256K or 512K

  • binlog_cache_size=64K #大事务binlog



  • # big-tables

  • innodb_file_per_table = 1skip-external-locking

  • max_connections=2048 #最大连接数

  • skip-name-resolve


  • # slow_query_log

  • slow_query_log_file = /var/log/mysql-slow.log

  • long_query_time = 30group_concat_max_len=65536# according to tuning-primer.sh

  • thread_cache_size = 8thread_concurrency = 16# set variables

  • concurrent_insert=2

  • 运行时修改

    使用以下命令来修改变量

  • set global {要改的key} = {值}; (立即生效重启后失效)

  • set @@{要改的key} = {值}; (立即生效重启后失效)

  • set @@global.{要改的key} = {值}; (立即生效重启后失效)

  • 试验

  • mysql> set @@global.innodb_buffer_pool_size=4294967296;

  • ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable

  • mysql> set @@global.thread_stack=262144;

  • ERROR 1238 (HY000): Variable 'thread_stack' is a read only variable

  • mysql> set @@global.binlog_cache_size=65536;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> set @@join_buffer_size=1048576;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> set @@read_rnd_buffer_size=4194304;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> set @@sort_buffer_size=262144;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> set @@read_buffer_size=131072;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> set global key_buffer_size=8388608;

  • Query OK, 0 rows affected (0.39 sec)

  • 我们可以看到innodb_buffer_pool_size和thread_stack报错了,他们只能改配置文件,在运行时是只读的。 以下直接复制使用

  • set @@global.binlog_cache_size=65536;

  • set @@join_buffer_size=1048576;

  • set @@read_rnd_buffer_size=4194304;

  • set @@sort_buffer_size=262144;

  • set @@read_buffer_size=131072;

  • set global key_buffer_size=8388608;

Ⅸ 手机日记记录器缓冲区选16m会怎样

当然是越大越好,越大后台运行的就越多拉,输出的日志是保存在缓冲区的。这个大小决定了log的长度。缓冲区简单的来说对于手机就是每次界面所能容下的最大体积。按默认设置即可。如果较低的话可能一些绚丽的桌面载入有问题。是log缓冲区吧。。。用于记录的。。。也可以这么讲。。。就是日志,每一条log文件最大大小,不出什么问题也没啥用,如果你不是开发者,默认值就可以了,这个只是在开发时有用的选项。

Ⅹ C盘空间不足

一、系统优化设置。
1、删除Windows强加的附件:
1) 用记事本NOTEPAD修改\winnt\inf\sysoc.inf,用查找/替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将“替换为”框设为空。并选全部替换,这样,就把所有的,hide都去掉了,
2) 存盘退出,
3)再运行“添加-删除程序”,就会看见“添加/删除 Windows 组件”中多出了好几个选项;这样你可以删除好些没有用的附件
2、关掉调试器Dr. Watson;
Dr.Watson是自带的系统维护工具,它会在程序加载失败或崩溃时显示。运行drwtsn32,把除了“转储全部线程上下文”之外的全都去掉。否则一旦有程序出错,硬盘会响很久,而且会占用很多空间。如果你以前遇到过这种情况,请查找user.dmp文件并删掉,可能会省掉几十M的空间。这是出错程序的现场,对我们没用。然后打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug子键分支,双击在它下面的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就彻底来取消它的运行了。
另外蓝屏时出现的memory.dmp也可删掉。可在我的电脑/属性中关掉BSOD时的DUMP
3、关闭“系统还原”:鼠标右健单击桌面上的“我的电脑”,选择“属性”,找到“系统还原”,如果你不是老噼里啪啦安装一些软件(难道你比我还厉害??),你也可以去掉,这样可以节省好多空间。

4.关闭“休眠支持”:因为休眠功能占的硬盘空间蛮大的, 所以关闭比较好,
控制台-->电源选项-->休眠(不要打勾)
(蓝调注:我觉得休眠还是很有用的。)

5、关掉不必要的服务
单击“开始”→“设置”→“控制面板”。双击“管理工具”→“服务”,打开后将看到服务列表,有些服务已经启动,有些则没有。右键单击要配置的服务,然后单击“属性”。在“常规”选项卡上选择“自动”、“手动”或“禁用”,其中“自动”表示每次系统启动时,Windows XP都自动启动该服务;“手动”表示Windows XP不会自动启动该服务,而是在你需要该服务时手动启动该服务;而“禁用”则表示不允许启动该服务。在实际配置时,选择“手动”或者“禁用”都可以实现关闭该服务的目的,推荐使用手动功能,这样你随时可以启动一些临时需要的服务。
有些服务是Windows XP所必需的,不能关闭,否则将会造成系统崩溃。至于各项服务
的功能,我们可以通过双击该服务或将鼠标悬停在该服务名上查看。具体服务的说明浅显,大家看得懂,可以自己选择那些要那些不要。修改的方法是:选中禁用的服务,点右键,选"属性"> "停止",将"启动类型"设置为"手动"或"已禁用"。

6、加速XP的开关机
1)缩短等待时间
开启注册表编辑器,找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control,
将 WaitToKillServiceTimeout 设为:1000或更小。 ( 原设定值:20000 )
找到 HKEY_CURRENT_USER\Control Panel\Desktop 键,将右边视窗的
WaitToKillAppTimeout 改为 1000, ( 原设定值:20000 )即关闭程序时仅等待1秒。将 HungAppTimeout 值改为:200( 原设定值:5000 ), 表示程序出错时等待0.5秒。

2)让系统自动关闭停止回应的程式。
打开注册表 HKEY_CURRENT_USER\Control Panel\Desktop 键, 将 AutoEndTasks 值设为 1。 ( 原设定值:0 )

3)MsConfig。大多数朋友都应该熟识MsConfig了,这是一个系统内置的Windows设置工具。点击开始菜单,选择“运行”,然后在录入框中敲入“msconfig”回车。我们要动手脚的是(启动)选项卡,点击它,这个选项卡中显示了Windows启动时运行的所有程序。这里没有一个程序对Windows来说是生死悠关的,所以放心大胆地把不要的去掉。把部分勾勾去掉之后,Windows启动会快些,同时空闲的系统资源也会多出一些。

7、XP Prefetcher
Windows XP自带了一个名为Prefetcher的服务,这个服务管理着Windows启动时的程序初始,其中指定的程序可以在以后使用中快速载入。 Prefetcher在默认情况下就是打开的,不过它的性能还可以进一步提升。打开注册表编辑器,在注册表中找到:
HKEY_LOCAL_ ManagerMemory
ManagementPrefetchParameters,其中有一个键值名为EnablePrefetcher,多数情况下它的值是3。推荐设置值是5,在我的机子上,设为5的时候工作状态最佳。可以随便试试不同的数值,直到找到最适合自己机子的值为止。
也可以把Prefetcher禁用掉,只需把值设为0就可以了。不过,除非是为了测试用途,一般人都不会傻到把它设为0。
8、压缩文件夹
这是一个相当好的优化,Windows XP内置了对.ZIP文件的支持,我们可以把zip文件当成文件夹浏览。不过,系统要使用部分资源来实现这一功能,因此禁用这一功能可以提升系统性能。实现方法非常简单,只需取消zipfldr.dll的注册就可以了,点击开始——运行,敲入: regsvr32 /u zipfldr.dll 。然后回车即可。

9、不加载DLL文件
浏览器在使用之后往往会有部分DLL文件在内存中缓存好长一段时间,相当大一部分内存会被不用的DLL文件点用。为了防止这种事情发生,找到注册表如下位置:
HKEY_LOCAL_
接下来建立一个名为AlwaysUnloadDLL,值为1的双字节值。
如果想要去除这项优化,只需把该键值设为0(也可以干脆把键删掉)。注意:该项优化要在Windows重新启动后才生效。

10、完全关闭Windows XP文件保护功能。此招慎用
从注册表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,修改“SFCDisable”键值为“FFFFFF9D”,如果需要重新启用该功能,重新设置为 “0”就可以了。

11、手动指定进程次序查看
同时按下Control+Alt+Delete三个键,然后点击“Processes(进程)”选项卡,可以看到一个如上图所示的对话框,在这里可以看到目前正在运行的所有进程。如果要为一个程序分配更多的进程时间,如3D Studio Max,只需右键点击这个进程,再把鼠标指针向下移动到“Set Priority>(设置优先级)”,然后选择你想要这个程序处在哪个优先级。当我接收email时,我会把3DMAX设为“标准”,但当我离开计算机的时候,我会把它的优先急提升为最高的“实时”,这样可以计算机更专注更快速地处理3D动作

12、关闭错误回报
控制台---->系统---->进阶---->右下角--->错误报告---->关闭

13、加快窗口显示速度:我们可以通过修改注册表来改变窗口从任务栏弹出,以及最小化回归任务栏的动作,步骤如下:打开注册表编辑器,找到HKEY_CURRENT_USER\
Control Panel\Desktop\WindowMetrics子键分支,在右边的窗口中找到MinAniMate键值,其类型为REG_SZ,默认情况下此健值的值为1,表示打开窗口显示的动画,把它改为0,则禁止动画的显示,接下来从开始菜单中选择“注销”命令,激活刚才所作的修改即可。

14、去掉“更新”选项:对于大多数的用户来说,Windows XP的Windows Update功能似乎作用不大,我们可以去掉它,操作步骤如下:打开注册表编辑器,找到
HKEY_CURRENT_USER\Software \Microsoft\Windows\CurrentVersion\Policies\
Explorer子键分支,选择“编辑”菜单下的“新建”命令,新建一个类型为REG_DWORD的值,名称为NoCommonGroups,双击新建的NoCommonGroups子键,在“编辑字符串”文本框中输入键值“1”,然后单击“确定”按钮并重新启动系统即可。
15、修改Windows XP的登录背景图案:面对长久不变的单调的登录图案,你可能日久生厌,我们可以通过注册表来把它换成自己喜欢的图案,步骤如下:打开注册表编辑器,找到 HKEY_USERS\.DEFAULT\Control Panel\Desktop子键分支,双击wallpaper,键入你选择好的图片的路径,如:c:\Documents and Settings\My Documents\My Pictures\mypic.bmp,点击“确定”,然后找到Tilewallpaper,双击它输入键值“1”,重新启动系统即可看到效果。

16、修改登录时的背景色:如果你还想修改登录时的背景颜色,可以按以下步骤操作:打开注册表编辑器,找到HKEY_USERS\. DEFAULT\Control Panel\Colors子键分支,双击子键分支下的Background键值名,出现“编辑字符串”对话框,在“数值数据”文本框中输入代表颜色的键值(比如黑色的RGB值为000,白色的RGB值为255 255 255,系统默认值是58 110 165),点击“确定”按钮,重新启动系统即可。

17、设置启动信息或增加警告信息:如果在启动Windows XP时,希望显示一些自己定义的个性化信息,可以按以下步骤来操作:打开注册表编辑器,找到HKEY_LOCAL_MACHINE_SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Winlogon子键分支,双击在它下面的LegalNoticeCaption健值名称,打开“编辑字符串”窗口,在“数值数据”文本框中输入信息对话框的标题,比如“你好,欢迎使用本机器”,然后双击LegalNoticeText,在随后出现的“编辑字符串” 窗口中输入想要显示的警告信息,比如“请不要随意修改本级的设置,谢谢!”,单击“确定”按钮,重新启动即可看到修改后的效果了。

18、每次启动时保持桌面设置不变:我们可以通过修改注册表来保护我们的桌面设置,无论做了什么样的修改,只要重新启动之后桌面就会恢复原样。步骤如下:打开注册表编辑器,找到HKEY_CURRENT_USERS\Software\Microsoft\Windows\ CurrentVersion\ Polices
\Explorer子键分支,在它的下面找到NoSaveSettings,其类型为REG_SZ,将其键值改为“0”,或者直接删除该键值项,重新启动系统使设置生效。

19、任意定制按钮颜色:尽管Windows XP本身带有多种窗口显示方案,但用户想定义某一个部位的颜色,比如把按钮的颜色由黑色改为蓝色或红色,这时就需要修改注册表了,步骤如下:打开注册表编辑器,找到HKEY_CURRENT_USER\Control Panel\Colors子键分支,双击在它下面的Bottontext,在打开的对话框中将其键值改为你想要颜色的值,比如红色255 0 0,单击“确定”按钮,并重新启动系统即可看到效果了,此时按钮上的文字颜色将变成红色,此外你还可以修改按钮的宽度和高度及背景等参数。

20、修改鼠标右键菜单
我们知道在98下可以通过注册表来修改鼠标右键菜单,其实在WinXP中也可以。方法如下:这里以在鼠标右键菜单上添加“用DOS窗口在这里浏览”为例。
1)打开注册表编辑器,找到HKEY_CLASSES_ROOT\Directory\shell,然后选中它,点击鼠标右键,新建一个主键,取名为“DOS”,然后选中新建的主键,在右边双击默认字符串值,在弹出的对话框中输入“用DOS窗口在这里浏览”,然后选中新建的主键,再建立一个主键,取名为“command”,选中“command”主键,修改默认值为“cmd.exe /k "cd %L"”即可。
2)检查:在任意一个文件夹上按下鼠标右键,可以在弹出的菜单里面看到“用DOS窗口在这里浏览”,选择用DOS窗口在这里浏览,按下鼠标左键,看到没有,DOS窗口弹了出来!

21、修改系统ID号(ID号在WinXP里面很重要)
在系统属性里面的常规标签下我们可以看到一串数字,如:55661-005-0809362-22169等等。这就是ID号。正版的WinXP每一套的ID号是不相同的(应该可以猜到我的目的了吧?),那么我们可不可以修改呢?当然可以(废话!如果不可以就没有必要写这篇文章了)。跟我来,看看我的本领!
1)ID号是存放在注册表里面的。主要放在这几个键值下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration的字符串ProctId
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\User information的字符串产品标识 /*如果没有使用向微软注册的话,这里不会出现*/
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion的字符串ProctId
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的字符串ProctId
以上4个地方就是在注册表中存放ID的键值,修改的时候要同时修改,修改完以后再看系统属性里面的常规标签,以免修改失败,导致ID还原。
22、修改版本号:
在关于Windows里面有一个内部版本号(正式版的是:2600.xpclient.010817-1148),这个版本号也是存放在注册表中的,具体位置是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,它用一个字符串来记录,修改这个名字叫做BuildLab的字符串就可以修改你的XP的版本号。

23、向隐藏的垃圾箱删除文件
Windows XP垃圾箱的默认位置是在桌面的右下角,在底部系统托盘的上面。如果用户打开多个窗口,则会挡住垃圾箱,使用户无法拖曳文件及文件夹至垃圾箱。为此,微软公司专门做了非常人性化的设计,当用户拖动一批文件并移至桌面右下角时,用户可以拖动鼠标并将所有文件移至桌面最下方任务条的空白区域,并在那里停留几秒钟,届时所有打开的窗口将会自动最小化,从而允许用户将文件拖至垃圾箱。另外,无论打开的多个窗口是否最大化,用户执行上述操作均可以实现让所有窗口最小化的效果。

24、音乐目录图片随意设
Windows XP在以往的Windows操作系统之上提供了很多更高级的管理功能,其中包括图片册生成器,该图片册生成器可以将唱片封面图片自动放置到用户对应保存的音乐文件夹内(这些音乐文件一般是微软的WMA格式文件)。虽然这项功能非常方便,但也存在一些问题。例如如果有些用户以前已经把一些音乐CD光盘转录成 MP3格式并保存在硬盘上,虽然用户能够从一些音乐网站如"www.cdnow.com"和"www.amguide.com"下载该CD光盘的唱片封面页,但用户只能手工一个一个地将这些封面页添加至每个音乐文件夹中。这将花费较长时间,而且一旦用户重新安装操作系统,就只好重复上述复杂的操作。
如何解决这一难题呢?其实并不复杂,当用户下载音乐唱片封面图片时,请将该图片文件名保存为"folder.jpg"并放至相应的音乐文件夹内,这样Windows XP系统会自动将其默认为该文件夹的缩略图片,而且如果用户使用Media Player for Windows XP(MPXP)播放器来播放音乐文件时,系统还会自动显示出该唱片封面图片。这样操作之后即使用户以后重新安装操作系统也没有问题。
此外,如果用户有需求,还可以在保存上述提及的"folder.jpg"文件时再保存一个名为"albumartsmall.jpg"的较小的图片文件,这样做的好处是如果用户使用MPXP播放器播放音乐文件,但播放器的窗口小于200 X 200像素,该播放器便可以直接显示这幅较小的图片,否则播放器需要对"folder.jpg"进行处理,调整其大小,以便显示在较小的窗口,而这自然会对文件调用的速度产生一定影响。

25、便捷地硬盘碎片整理
电脑使用一段时间后硬盘会产生大量文件碎片,用户需要定期调用磁盘碎片整理程序进行清理。为此,这里向你提供一个可以让你更加便捷地调用整理硬盘碎片程序的方法。
用户使用“记事本”编辑一个名为"context_defrag.inf"的注册表导入文件,并在该文件中输入下列内容:
; context_defrag.INF
; Adds Defrag to the right click context menu in Windows XP
[version]
signature="$CHICAGO$"
[DefaultInstall]
AddReg=AddMe
[AddMe]
HKCR,"Drive\Shell\Defrag\command",,,"DEFRAG.EXE %1"
编辑完毕后用鼠标右击该文件并选择“安装”,安装后即在Windows XP操作系统内添加了一个文本菜单。用户需要整理硬盘时,打开“我的电脑”,用鼠标右击选中需要进行整理的硬盘盘符,从弹出的文本菜单中选择 "defrag"项,这时系统就会自动调用内置的"defrag.exe"程序整理硬盘。
如果用户需要将上述安装到系统注册表的信息删除,可使用regedit.exe注册表编辑器进行编辑修改,具体操作为寻找到"HKEY_CLASSES_ROOT\Drive\shell\"目录项,删除其中的"defrag"文件夹,最后关闭注册表编辑器。

26、清除共享文件夹
Windows XP操作系统一个比较不友好的用户界面是在“我的电脑”窗口上半部分显示所有共享的文件夹,如果用户设置的共享文件夹较多,每当打开“我的电脑”窗口时,就会列有很多共享文件夹信息。如何删除这些信息显示呢?使用注册表编辑器,并寻找这个主键"HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ My Computer \ NameSpace \ DelegateFolders",在该主键下有一个名为
{59031a47-3f72-44a7-89c5-5595fe6b30ee}的副键,删除该副键便可清除那些共享文件夹信息。上述修改无需重新启动便可生效。

27、显示共享设置标签
Windows 2000操作系统中用户在设置文件夹的共享属性时操作非常简便,只需用鼠标右击该文件夹并选择属性,就可以看到共享设置标签。而在Windows XP系统设置文件夹共享时则比较复杂,用户无法通过上述操作看到共享设置标签。具体的修改方法如下:打开“我的电脑”中的“工具”,选择“文件夹属性”,调出“查看”标签,在“高级设置”部分滚动至最底部将"Use simple file sharing (Recommended)"前面的选择取消,另外如果选项栏里还有"Mickey Mouse"项也将其选择取消。这样修改后用户就可以象使用Windows 2000一样对文件夹属性进行方便修改了。
28、调用系统声音方案
与以往的Windows操作系统相比,Windows XP提供了更加优秀的声音方案,但系统默认却没有调用该方案。为了激活该方案,我们需要执行下列操作:打开“控制面板”,选择“声音、语音、音频设备” 项,从中找到“修改声音方案”的任务栏,在打开的对话框中选择“Windows默认”,此时系统会提示用户是否保存以前的声音方案设置,用户可以选择 “否”并点击“确认”,完成修改

29、加快开始菜单的显示
Windows XP系统默认的开始菜单显示较慢,但用户可以通过编辑注册键值来加快显示,具体方法是:打开注册表编辑器,寻找"HKEY_CURRENT_USER \ Control Panel \ Desktop \ MenuShowDelay"主键,系统默认值为400,用户可以根据自己的喜好适当调小该键值,最低可设为“0”。如果此方法无效,请从“控制面板”中选择“显示属性”,在“显示效果”中选择“高级”,将"show menu shadow"项的选择取消,这样便可以加快开始菜单的显示了。

30、让欢迎窗口更清晰
Windows XP系统的显示效果得到了较大提高,这主要是基于它使用了名为"ClearType"的清晰化技术,该技术特别让使用笔记本电脑及液晶显示器的用户在运行 Windows XP操作系统时感受到与以往系统不同的效果。但由于该清晰效果只有当Windows启动完毕后才能调用,因此在系统启动过程中的欢迎窗口仍然无法实现这一效果。为了使欢迎窗口更加清晰,用户可以使用注册表编辑器进行修改,寻找到这两个主键
"(default user) HKEY_USERS \ .Default \ Control Panel \ Desktop \ FontSmoothing
(String value)"和"HKEY_USERS \ .Default \ Control Panel \ Desktop \ FontSmoothingType
(Hexadecimal DWORD value)",将键值修改为“2”,这样便可以实现清晰显示效果了。

31、启动时禁止自动调用"Windows Messenger"
为了推广微软公司推出的即时聊天程序"Windows Messenger",Windows XP操作系统的默认设置是在系统启动时便调用该程序。但如果你并不习惯使用该程序,可以通过删除"HKEY_CURRENT_USER\Software \Microsoft\Windows\CurrentVersion\Run\MSMSGS"此键来实现。

32、在关机对话框中显示“休眠”
Windows XP的默认设置是在关机对话框中没有让系统进入休眠状态的选项,而显示该选项的操作非常简单,当出现关机对话框时,用户可以同时按下"SHIFT"键,这样“休眠”选项便出现了。

二、硬件优化
1、内存性能优化
Windows XP中有几个选项可以优化内存性能,它们全都在注册表下面位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
1)禁用内存页面调度(Paging Executive)
在正常情况下,XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。要注意的是,拥有很多内存的用户(256M以上)才好使用这个设置。这个设置的名字正如它的功能一样,叫“DisablePagingExecutive”。把它的值从0改为1就可以禁止内存页面调度了。
2)提升系统缓存:把LargeSystemCache键值从0改为1,Windows XP就会把除了4M之外的系统内存全部分配到文件系统缓存中,这意味着XP的内核能够在内存中运行,大大提高系统速度。剩下的4M内存是用来做磁盘缓存的,在一定条件下需要的时候,XP还会分配更多一些。一般来说,这项优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。正如前面所说的,必须有256M以上的内存,才好激活LargeSystemCache,否则不要动它。
3)输入/输出性能:这个优化只对server用户才有实在意义——它能够提升系统进行大容量文件传输时的性能。在默认情况下,这个键值在注册表中是不存在的,必须自己建一个DWORD(双字节值)键值,命名为IOPageLockLimit。多数人在使用这项优化时都发现8到16M字节之间性能最好,具体设什么值,可以设进去试试看哪个值可以获得最佳性能。记住这个值是用字节来计算的,因此,譬如你要分配12M的话,就是12 * 1024 * 1024,也就是12582912。跟前面的内存优化一样,只有当你的内存大于256M的时候才好更改这里的值。
2、打开DMA:到装置管理员里选择IDE ATA/ATAPI controllers ,到Primary/Secondary IDE Channel里面的进阶设定 ,将所有的转送模式都设定为使用DMA(如果可用的话) ,系统就会自动打开DMA支援(在BIOS里也应该要先设为支援DMA)

3、XP里关闭光驱自启动(Autorun)功能:打开:我的电脑,在“移动存储设备”下,右键单击CD-ROM 驱动器,然后单击“属性”,看到“自动播放”选项卡了么?自己去改吧。

4、设置CPU:Windows XP无法自动检测处理器的二级缓存容量,需要我们自己在注册表中手动设置,首先打开注册表(运行中输入“Regedit”),打开:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\,选择“SecondLevelDataCache”,根据自己所用的处理器设置即可,例如PIII Coppermine/P4 Willamette是“256”,Athlon XP是“384”,P4 Northwood是“512”

5、XP安装驱动程式时,往往会出现一个窗口,说这个程序没有经过微软的验证,我们可以在控制面板——系统——硬件——设备管理员——驱动程序签名,看到了选项了么,知道该怎么做了吧。

6、为IRQ中断请求排优先次序
计算机的每一个主要部件都设了个IRQ中断号。这里就是要通过修改每个IRQ请求的优先次序达到优化目的。这里主要的优化对象是系统/CMOS实时钟,它通过主板来提升性能。首先,要确定你想要哪个组件获得更高的性能,然后找到这个硬件正在使用的IRQ中断号。怎么找呢?打开控制面板里的系统属性(也可以按键盘上的Windows+Break热键组合打开它)。选中“硬件”选项卡,然后点击“设备管理器”按钮。右键点击要查IRQ号的组件,选择 “属性”,然后点击“资源”选项卡。这里可以看到设备正在使用的IRQ中断号(如果没有IRQ中断号,选择另一个设备)。把中断号记下来,然后运行注册表编辑器regedit,找到注册表中的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ PriorityControl 位置。我们要在这里建立一个名为IRQ#Priority(其中“#”是具体的IRQ中断号)的DWORD双字节值,然后把它的值设为1。譬如说,我的系统CMOS实时钟的IRQ中断号是8,我要建立的键名就是IRQ8Priority。重新启动计算机之后,就会发现刚优化过的组件性能有所提高。笔者强烈建议用这个方法优化系统CMOS实时钟,因为它能改善整块主板的性能。当然也可以把多个IRQ中断号优先级提高,但这样做的效果没那么好,而且有可能造成系统不稳定。要把这个优化设置撤消的话,只要把刚才建立的注册表键值删掉就OK了。