December 2010 Archives

恢复MBR和GRUB

| No Comments

今天成功的使用光盘引导,用SFDISK设置了活动分区到原来的XP系统盘,修复了一下MBR,就可以顺利启动到winxp了。
昨天用优盘做的系统MAXDOS中也有SFDISK,却始终没有成功,这个实际上不应该的,可能是MBR忘记修复或者安装了SFDISK自己的启动管理器?或者是这个版本的SFDISK本身有bug,导致活动分区设置好像无效?
总之,后续这里再出问题可以找个PE系统用MAXDOS系统之类的用SFDISK就可以轻松搞定了,关键点:设置活动分区,修复MBR。

上面修复MBR之后实际Suse系统还是无法正常进入的,于是在进入XP后重新安装了了OpenSUSE中的安装引导程序openSUSE11_3_LOCAL.exe,准备重新来一次安装或者更新过程。和安装一样进入新的安装流程后,开始选择了更新,过程很顺利,基本可以看到数据是没有问题的,就是说之前使用Gparted进行分区没有造成大的问题,只是影响了引导分区。更新完成后直接进入了系统,看到之前安装的软件都还在,感觉不错,迫不及待的直接reboot,很悲剧,提示无合适的引导系统。重新用光盘引导用SFDISK设置了活动分区到XP系统,再次进入安装流程,这次得还是来试试恢复GRUB的操作了。

参考了网上的一些资料,非常简单,只有几步:
1)进入rescue系统
2)运行grub
3)root (hd0,1)  --  输入1之前,可以按TAB会有相关提示
4)setup (hd0)
5)quit

一切搞定,重启后见到了久违的GRUB引导界面。

另外一个磁盘分区管理和修改的工具:SPFDISK,也可以看看。

参考资料:
http://www.chinaunix.net/jh/4/16148.html
http://www.svn8.com/linux/glpz/20090611/6384.html


--EOF--

悲剧的分区调整

| No Comments
昨天新安装的OpenSUSE因为分区之前做的不合理,使用Gparted进行分区调整,重启后悲剧了,引导分区被破坏,开机只出现GRUB字样就无法进入了。接下来就想如何修复引导分区,如何进DOS。

下载制作了接近10个优盘启动的系统和软件,最后终于做好一个winpe+DOS的,能进入纯DOS,却无法操作磁盘,心情甚差,下一步只能是找光盘来进行引导进去试试了,如果可以,不知道是否还能进入SUSE?


--EOF--

linux-kernel-headers的问题

| No Comments

Search results for linux-kernel-headers :
OpenSuSE ftp.opensuse.org/distribution/11.2/repo/oss/suse/noarch/linux-kernel-headers-2.6.31-3.4.noarch.rpm
OpenSuSE ftp.opensuse.org/distribution/11.1/repo/oss/suse/noarch/linux-kernel-headers-2.6.27-2.28.noarch.rpm
OpenSuSE ftp.opensuse.org/distribution/11.3/repo/oss/suse/noarch/linux-glibc-devel-2.6.32-3.3.noarch.rpm

特别注意最后一个包,名字是不一样的,但是这里的内容却是差不多的。


> rpm -qa | grep kernel
kernel-desktop-2.6.34-12.3.i586
kernel-devel-2.6.34-12.3.noarch
kernel-firmware-20100617-2.2.noarch
kernel-source-2.6.34-12.3.noarch
linux-kernel-headers-2.6.31-3.4.noarch

可以对查询结果比较一下:
rpm -qlp linux-glibc-devel-2.6.32-3.3.noarch.rpm 
rpm -ql linux-kernel-headers

另外一个值得一看的:

Irrelevant, linux-kernel-headers does _not_ contain the headers needed for compiling a kernel module, see "rpm -qi linux-kernel-headers".

You need "kernel-$flavor-devel" matching the flavor of your running kernel, "uname -r" will tell you. 


Problem solved  Thank you for the tip.
While trying to get the most recent version of the headers, I've added this repository:


This is why I was having a different kernel_default version. After disabled it and downgrade the kernel-default-devel, all went fine.

--EOF--

zz From:http://www.linuxdiyf.com/viewarticle.php?id=78994

rpm -qpl xxxxxx.rpm

安装RPM包的时候,一般是作为"root"登陆。

查询RPM的命令可用:> man rpm

1.如何安装rpm软件包

rmp软件包的安装可以使用程序rpm来完成。执行下面的命令

rpm -i your-package.rpm

其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。

安装过程中可能出现下面的警告或咛崾荆?

... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有

的文件,缺省时这样的情况下是无法正确安装的可以用

rpm --force -i 强制安装即可

... is needed by ...

... is not installed ... 此包需要的一些软件你没有安装可以用

rpm --nodeps -i 来忽略此信息

也就是说,rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题,什么包

都能安装上,但这种强制安装的软件包不能保证完全发挥功能

2.如何安装.src.rpm软件包

有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时

需要进行编译。这类软件包有两种安装方法,

方法一:

1.执行rpm -i your-package.src.rpm

2. cd /usr/src/redhat/SPECS

3. rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件

4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录

5. ./configure 这一步和编译普通的源码软件一样,可以加上参数

6. make

7. make install

方法二:

1.执行rpm -i you-package.src.rpm

2. cd /usr/src/redhat/SPECS

前两步和方法一相同

3. rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件

这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等)

在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。

执行rpm -i new-package.rpm即可安装完成。

3.如何卸载rpm软件包

使用命令 rpm -e 包名,包名可以包含版本号等信息,但是不可以有后缀.rpm

比如卸载软件包proftpd-1.2.8-1,可以使用下列格式:

rpm -e proftpd-1.2.8-1

rpm -e proftpd-1.2.8

rpm -e proftpd-

rpm -e proftpd

不可以是下列格式:

rpm -e proftpd-1.2.8-1.i386.rpm

rpm -e proftpd-1.2.8-1.i386

rpm -e proftpd-1.2

rpm -e proftpd-1

有时会出现一些错误或者警告:

... is needed by ... 这说明这个软件被其他软件需要,不能随便卸载

可以用rpm -e --nodeps强制卸载

4.如何不安装但是获取rpm包中的文件

使用工具rpm2cpio和cpio

rpm2cpio xxx.rpm | cpio -vi

rpm2cpio xxx.rpm | cpio -idmv

rpm2cpio xxx.rpm | cpio --extract --make-directories

参数i和extract相同,表示提取文件。v表示指示执行进程

d和make-directory相同,表示根据包中文件原来的路径建立目录

m表示保持文件的更新时间。

5.如何查看与rpm包相关的文件和其他信息

下面所有的例子都假设使用软件包mysql-3.23.54a-11

1.我的系统中安装了那些rpm软件包

rpm -qa 讲列出所有安装过的包

如果要查找所有安装过的包含某个字符串sql的软件包

rpm -qa |grep sql

2.如何获得某个软件包的文件全名

rpm -q mysql 可以获得系统中安装的mysql软件包全名,从中可以获得

当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11

3.一个rpm包中的文件安装到那里去了?

rpm -ql 包名

注意这里的是不包括.rpm后缀的软件包的名称

也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。

如果只是想知道可执行程序放到那里去了,也可以用which,比如

which mysql

4.一个rpm包中包含那些文件

一个没有安装过的软件包,使用rpm -qlp ****.rpm

一个已经安装过的软件包,还可以使用rpm -ql ****.rpm

5.如何获取关于一个软件包的版本,用途等相关信息?

一个没有安装过的软件包,使用rpm -qip ****.rpm

一个已经安装过的软件包,还可以使用rpm -qi ****.rpm

6.某个程序是哪个软件包安装的,或者哪个软件包包含这个程序

rpm -qf `which 程序名` 返回软件包的全名

rpm -qif `which 程序名` 返回软件包的有关信息

rpm -qlf `which 程序名` 返回软件包的文件列表

注意,这里不是引号,而是`,就是键盘左上角的那个键。

也可以使用rpm -qilf,同时输出软件包信息和文件列表

7.某个文件是哪个软件包安装的,或者哪个软件包包含这个文件

注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以

用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。

首先获得这个程序的完整路径,可以用whereis或者which,然后使用rpm -qf例如:

# whereis ftptop

ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz

# rpm -qf /usr/bin/ftptop

proftpd-1.2.8-1

# rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt

proftpd-1.2.8-1

总结:

获得软件包相关的信息用rpm -q,q表示查询query,后面可以跟其他选项,比如

i 表示info,获得软件包的信息;

l 表示list,获得文件列表;

a 表示all,在所有包中执行查询;

f 表示file,根据文件进行相关的查询;

p 表示package,根据软件包进行查询

需要的查询条件可以使用grep产生,或者从"` `"中的命令行产生

6.关于rpm软件包的一些相关知识

1.什么是rpm

rpm 即RedHat Package Management,是RedHat的发明之一

2.为什么需要rpm

在一个操作系统下,需要安装实现各种功能的软件包。这些软件包一般都有各自的

程序,但是同时也有错综复杂的依赖关系。同时还需要解决软件包的版本,以及安装,

配置,卸载的自动化问题。为了解决这些问题,RedHat针对自己的系统提出了一个

较好的办法来管理成千上百的软件。这就是RPM管理系统。在系统中安装了rpm管理系统

以后,只要是符合rpm文件标准的打包的程序都可以方便的安装,升级,卸载

3.是不是所有的linux都使用rpm

任何系统都需要包管理系统,因此很多linux都使用rpm系统。但rpm系统是为RH专门

但是TL,Mandrake等系统也都使用rpm。由于rpm的源程序可以在别的系统上进行编译,

所以有可能在别的系统上也使用rpm

除了rpm,其他一些系统也有自己的软件包管理程序,例如debian的deb包,

slakware也都有自己的包管理系统

4.rpm包的文件名为什么那么长

rpm包的文件名中包含了这个软件包的版本信息,操作系统信息,硬件要求等等。

比如mypackage-1.1-2TL.i386.rpm,其中mypackage是在系统中登记的软件包的名字

1.1是软件的版本号,2是发行号,TL表示用于TL操作系统,还可能是RH等。i386表示

用于intel x86平台,还可能是sparc等。

5.软件包文件名中的i386,i686是什么意思

rpm软件包的文件名中,不仅包含了软件名称,版本信息,还包括了适用的硬件架构

的信息。

i386指这个软件包适用于intel 80386以上的x86架构的计算机(AI32)

i686指这个软件包适用于intel 80686以上(奔腾pro以上)的x86架构的计算机(IA32)

noarch指这个软件包于硬件架构无关,可以通用。

i686软件包的程序通常针对CPU进行了优化,所以,向后兼容比较用以,i386的包在

x86机器上都可以用。向前一般不兼容。不过现在的计算机,奔腾pro以下的CPU已经很少

用,通常配置的机器都可以使用i686软件包

6.不同操作系统发行的rpm包可否混用?

对于已经编译成二进制的rpm包,由于操作系统环境不同,一般不能混用。

对于以src.rpm发行的软件包,由于需要安装时进行本地编译,所以通常可以在不同

系统下安装。

7.使用rpm时遇到的一些特殊问题

Q 我用rpm -e **.rpm无法删除rpm包

A 包名不要包括rpm,

rpm -e 包名,可以包含版本号等信息,但是不可以有后缀.rpm

Q 在MS的系统下有没有读RPM文件的工具?

A wincmd with rpm plugins.....

Q 是否可以通过ftp安装安装升级rpm包?

A 可以。rpm -ivh ftp://xxxxxxxx/PATH2SomeRPM

Q rpm安装时已有的包版本过高怎么办?

A 有时由于安装的软件包太老,而系统中相关的软件包版本比较新,所以可能需要

安装的包依赖的一些文件会找不到。这时有两种解决办法,

第一是在系统文件中找到和需要的文件功能相同或相似的文件,做一个符号链接到

需要的目录下。

第二是下载安装新版本的软件包。

--EOF--

OpenSUSE 杂记1:包管理 资源库

| No Comments
参考: http://en.opensuse.org/Package_repositories

Official repositories

These are official repositories, supported by openSUSE.
Note: You may have added these during installation, if so adding them again will be a bad idea.

Oss

The main repository, open source software only.
Logo-geeko mini.png
Version:
11.3
http://download.opensuse.org/distribution/11.3/repo/oss/

Non-oss

Non free (as in freedom) software, such as Flashplayer, Java, Opera, IPW-firmware, RealPlayer etc.
Logo-geeko mini.png
Version:
11.3
http://download.opensuse.org/distribution/11.3/repo/non-oss/

Update

Repository for official security and bugfix updates.
Logo-geeko mini.png
Version:
11.3
http://download.opensuse.org/update/11.3/
Src-oss

Source RPMs. Advanced users only.
Logo-geeko mini.png
Version:
11.3
http://download.opensuse.org/source/distribution/11.3/repo/oss/

Src-non-oss

Source RPMs. Advanced users only.
Logo-geeko mini.png
Version:
11.3
http://download.opensuse.org/source/distribution/11.3/repo/non-oss/

Debug

Debuginfo packages. Advanced users only.
Logo-geeko mini.png
Version:
11.3
http://download.opensuse.org/debug/distribution/11.3/repo/oss/
http://download.opensuse.org/debug/update/11.3/


http://en.wikipedia.org/wiki/OpenSUSE
里可以学习到OpenSUSE的主要的一些包管理工具的介绍:
 YaST 
 ZYpp

--EOF--

安装配置OpenSUSE

| No Comments
1.安装Google Chrome
   需要安装一个依赖的库:libjpeg6-6.2.0-4.1.1.i586.rpm,然后就可以很快的安装了。
   另外不小心我还安装了Chromium Web Browser,虽然引擎相同,但这是2个不同的东西哦,有兴趣的可以google一下。

2.设置字体
   文泉驿的字体已经默认在11.3的版本中安装了,设置系统的字体,firefox,chrome的字体到 WenQuanYi Zen Hei Sharp,整个体验就非常好了,细腻,模糊,虚的问题基本解决了一大半。

3.安装gcc
   没想到这个居然是最困难的,确实,这里的库很多,命名,版本更是郁闷。安装了各种依赖库后,最后卡死在linux-kernel-headers,这个库在最新的版本中居然是没有对应内核版本的rpm包的,如果以后编译内核,这里很有可能出问题。反馈的人还不少,可以参考这里:http://forums.opensuse.org/english/get-help-here/install-boot-login/443318-where-get-linux-kernel-headers-11-3-a-2.html

总体来说,体验相比8年前好了很多,基本够用了。

下一步,安装一些常用的软件来玩玩。

--EOF--

工作这么多年,基本就没有完整的安装过linux。现在家里闲置了好几台机器,今天突然想试试了。

选择的版本是OpenSUSE,毕竟公司使用的都是这个发行版本的,还是一样比较好。

因为没有刻录机,也没有刻录盘,只能选择USB安装,所以之前找了大量的资料来学习如何安装,测试了2种,UtralISO和一个Universal USB Installer的工具,直接做USB启动盘 ,结果均失败了。无奈之下,继续找资料,发现了有个openSUSE11_3_LOCAL.exe,看起来可以在windows直接搞定,测试运行,安装,启动,居然可以开始安装了。

接下来有个小插曲,反正中断之后需要选择从那里获取安装文件,选择优盘目录,然后在输入/,就可以开始安装之旅了。
选择的仍然是我喜欢的Gnome桌面,没有选KDE,希望没失望。

安装后使用中文的过程非常顺利了,基本满足我的要求了,下一步就是好好折腾了,不过刚才安装chrome已经失败,看来时间会花不少。

--EOF--

可以参考:

需要删除或者清除之前的数字频道信息,再重新收台才能查看。

这个问题折腾了我好久,几个星期没法收看深圳卫视高清频道了,关键是不能给小孩看魔力宝宝。

G11C上没找到删除频道信息的地方,只能是恢复出厂设置,再搜索频道,然后就恢复正常了。

搜索信号可以参考:

香港深圳地面数字电视频率与节目表编号 名称 频道 频率MHz(发射位置/功率/载波/极化)
1 TVB翡翠台 Jade
DS-22
DS-30
DS-24
DS-27 546(九龙坑山)(1KW)546(南丫岛)(150 W)650(青山)(100 W)562(飞鹅山)(320 W)626(金山)(100 W)(多载波/水平)
2 TVB明珠台 Pearl
3 ATV本港台 Home
4 ATV国际台 World
5 SZTV-5(体育健康) DS-24 562梧桐山(2KW/单载波/垂直)
6 SZTV-HD(深圳高清台)
7 SZTV-7(公共)
8 SZTV(深圳卫视)
9 翡翠2台
J2 Z-40 586(多载波/水平)九龙坑山、慈云山(1KW),青山、飞鹅山(320 W),金山(100 W),南丫岛(150 W)
10 互动新闻台 iNews
11 HD jade(高清翡翠台)
12 HD-ATV (亚视高清台) Z-42 602(多载波/水平)九龙坑山、慈云山(1KW),青山、飞鹅山(320 W),金山(100 W),南丫岛(150 W)
13 南方卫视
14 中天亚洲台 CTI-Asia
15 CCTV-4
16 GDZJ(广东珠江) DS-37 706梧桐山(2.5KW/多载波/垂直)
17 GDTV(广东卫视)
18 CCTV-4
19 CCTV-NEWS(央视新闻)
20 SZTV-1(电视剧)
21 SZTV-2(都市)
22 CCTV HD(央视高清台) DS-47 786梧桐山(2.5KW/多载波/垂直)
23 CCTV-1 HD(央视1高清)
DS-45 770(测试信号)
CCTV-5/ CCTV-8 DS-31 658(测试信号/科技园南区清华研究院)
澳视澳门/葡文/体育/生活 DS-16 498(20W/多载波)
澳视高清 DS-35 690(20W/多载波)

--EOF--

做好数据备份和资料整理

| No Comments
一直一来,自己使用公司的台式机+自己的笔记本,资料管理都比较混乱。特别是最近这几年笔记本玩的比较勤,从之前的T23到R50p,再到T43,再到T60,每次重装系统,数据的迁移都是一个很大的过程,而且之前一直偷懒,都是全量copy备份,再有选择的恢复,导致数据更是有些乱和重复。

两年前有过一次硬盘异常,做了一些数据备份,之后也没有特意坚持和继续,今天同事的笔记本硬盘从维修商那里拿回来,坏掉的500G硬盘没能恢复出任何数据,丢失了很多资料,文档和邮件,比较可惜,这个也提醒我,要做好数据备份拉。

备份之前,先将大概的数据文件进行了分类整理,花了2个多小时,但还没能整理好,还是有些乱,但还是整理好了几个大的可以备份同步的目录,接下来就是使用GoodSync同步了4个目录到移动硬盘上,整体的数量在12G左右,还有大量的文档因为笔记本上也不是最新的,所以没有同步备份。

另外今天也记起来公司使用的台式机也已经使用了快4年,得赶紧申请换机器,做好数据备份,不然那里的东西更多,所有的邮件都在那里保存,没有任何备份呢。

接下来的工作:将笔记本上的资料进一步整理优化分类,删掉或者打包过时的文档,尽量提供文档的使用率。台式机上的数据也要做一些分类和整理,做好备份。



--EOF--

现状:T60

电脑型号  LENOVO 20077JU
计算机系统  Microsoft Windows 7 旗舰版  (32位)
CPU  (英特尔)Intel(R) Core(TM)2 CPU         T7400  @ 2.16GHz(2167 MHz)
主板  LENOVO 20077JU
内存  3GB(   )
主硬盘  500 GB (西部数据 WDC WD5000BEVT-22ZAT0 已使用时间: 2467小时)
显卡  ATI Mobility Radeon X1400 (128 MB)
显示器  联想 LEN4043 32位真彩色 60Hz
声卡  High Definition Audio 设备
网卡  Intel(R) PRO/1000 PL Network Connection

根据资料,硬盘接口是SATA1,上Intel的X25-M会有点浪费了,接口限速:(
所以现在还是先观察一下T60的主板情况,然后再考虑升级。

--EOF--

GoodSync安装折腾

| No Comments
之前曾经在一篇日志中记录了一个好用的同步软件GoodSync,但新使用T60之后这个软件没有安装。一晃一年多过去了,这个软件的版本突飞猛进,已经到版本8.5.1.1了,体积也从之前的1M多膨胀到了5M多。

每次使用Google找GoodSync,居然都会被墙,本来想找最新版本的,但破解实在不好找,浪费了我2个小时也没能搞定。最后找出了以前下载的老版本7.2.2安装,这才算搞定。当然安装老版本之前,需要把之前的相关License文件删除,用Everything查找GoodSync就很方便的找到了,注册表信息不用清理。然后,再升级安装新版本,目前来看一切正常。

这个新的版本已经支持sftp,可以试试网络备份了。

--EOF--

修改了网站样式

| No Comments
借用dbanotes.net,修改了如下CSS:
http://www.guduo.net/styles.css,内容如下:

@import url(http://www.guduo.net/mt-static/themes-base/blog.css);
@import url(http://www.guduo.net/mt-static/themes/unity-blue/screen.css);

看起来清爽了不少,再次感谢 Fenng

同时,也针对 Entry Summary 模板,加了如下信息:

<p>--<acronym title="End of File">EOF</acronym>--</p>

学习~

--EOF--

MT的Design->Themes功能慎用

| No Comments
如果调整,则之前自定义的模板会全部丢失,恢复非常麻烦,估计只能通过数据库进行恢复。

今天闲着蛋疼,手工调整了一下,悲剧了,通过调整数据库才恢复之前的模板,这里的操作过程后续会完整的再来整理一下。

现在的进展情况:直接使用了之前的备份DB,目前功能正常,下一步我想想如何做到只恢复做这个改动影响的相关数据库表。


相关操作,xxx为数据库名,新的数据库需要到cPanel后台去新建一个。

1)导入原有数据到新库:

mysql -uxx -p xxx < xxx.dump.20101211

2)修改gi-bin/mt/mt-config.cgi到新的库
ObjectDriver DBI::mysql
Database yimutian_xxx

3)测试上述是否升级正常恢复到原来的模板设置


备份新库和老库:
mysqldump -uxxx -p xxx > dump.20101212.new
mysqldump -uxxx -p xxx > dump.20101212.old.bad

导如新库数据到原DB:
mysql -uxxx -p xxx < dump.20101212.new
恢复mt-config.cgi



--EOF--

近期对MySQL做的一些整理记录

| No Comments
参考了 MySQL Performance Blog 上的很多内容,同时浏览了 High Performance MySQL, Second Edition 这本书中部分内容,对MySQL索引的使用和优化有了一些新的认识。

主要有几点:
1)充分利用聚集索引和覆盖索引的优势,另外注意使用的场景和条件。
2)书中对Optimizing Sorts和Optimizing LIMIT and OFFSET分别放在了2个不同的章节,但说的有一个共同点。


InnoDB 索引
聚集索引 - InnoDB,MyISAM不是
Clustered Index
非聚集索引
non-clustered indexes (Secondary Indexes)

其它概念
联合索引(组合索引)
composite indexes
Multiple-Column Indexes
覆盖索引
Covering Indexes

MySQL高效使用索引
Using index to find rows
The main purpose of the index is to find rows quickly - without scanning whole data set.
Using Index to Sort Data
Another great benefit of BTREE index is - it allows to retrieve data in sorted form hence avoiding external sort process for executing of queries which require sorting.

MySQL高效使用索引
Using index to read data
Some storage engines (MyISAM and Innodb included) can also use index to read the data, hence avoiding to read the row data itself.
If MySQL is only reading index and not accessing rows you will see "using index" in EXPLAIN output.

让MySQL使用正确的索引
有索引就使用"最好"的索引,除非优化器认为使用表扫描更有效。
是否使用扫描取决于是否"最好"的索引跨越超过(30%)的表。
其它因素:例如表大小、行数和I/O块大小,固定比例不再决定选择使用索引还是扫描。

有时MySQL不使用索引,即使有可用的索引。一种情形是当优化器估计到使用索引将需要MySQL访问表中的大部分行时。
(在这种情况下,表扫描可能会更快些,因为需要的搜索要少)。然而,如果此类查询使用LIMIT只搜索部分行,MySQL则使用索引,因为它可以更快地找到几行并在结果中返回。

OPTIMIZE
ANALYZ
USE/Force INDEX
IGNORE INDEX
Negate use of PRIMARY KEY
Make MySQL think the problem is harder than it really is


MySQL如何优化排序
在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序。
即使ORDER BY不确切匹配索引,只要WHERE子句中的所有未使用的索引部分和所有额外的ORDER BY 列为常数,就可以使用索引。

索引的问题
增加了写操作的开销
非序列增长主键带来的开销

理想
只有一个聚集索引
查询只根据主键来进行
插入数据主键顺序递增
使用合适的最小类型
...
->Sphinx

==============================================================

Optimizing Sorts

The last issue we want to cover in this case study is sorting. Sorting small result sets
with filesorts is fast, but what if millions of rows match a query? For example, what if
only sex is specified in the WHERE clause?
We can add special indexes for sorting these low-selectivity cases. For example, an
index on (sex,rating) can be used for the following query:
mysql> SELECT <cols> FROM profiles WHERE sex='M' ORDER BY rating LIMIT 10;
This query has both ORDER BY and LIMIT clauses, and it would be very slow without
the index.
Even with the index, the query can be slow if the user interface is paginated and
someone requests a page that's not near the beginning. This case creates a bad com-
bination of ORDER BY and LIMIT with an offset:
mysql> SELECT <cols> FROM profiles WHERE sex='M' ORDER BY rating LIMIT 100000, 10;
Such queries can be a serious problem no matter how they're indexed, because the
high offset requires them to spend most of their time scanning a lot of data that they
will then throw away. Denormalizing, precomputing, and caching are likely to be the
only strategies that work for queries like this one. An even better strategy is to limit
the number of pages you let the user view. This is unlikely to impact the user's expe-
rience, because no one really cares about the 10,000th page of search results.
Another good strategy for optimizing such queries is to use a covering index to
retrieve just the primary key columns of the rows you'll eventually retrieve. You can
then join this back to the table to retrieve all desired columns. This helps minimize
the amount of work MySQL must do gathering data that it will only throw away.
Here's an example that requires an index on (sex, rating) to work efficiently:

mysql> SELECT <cols> FROM profiles INNER JOIN (
    -> SELECT <primary key cols> FROM profiles
    -> WHERE x.sex='M' ORDER BY rating LIMIT 100000, 10
    -> ) AS x USING(<primary key cols>);



Optimizing LIMIT and OFFSET

Queries with LIMITs and OFFSETs are common in systems that do pagination, nearly
always in conjunction with an ORDER BY clause. It's helpful to have an index that sup-
ports the ordering; otherwise, the server has to do a lot of filesorts.
A frequent problem is having a high value for the offset. If your query looks like
LIMIT 10000, 20, it is generating 10,020 rows and throwing away the first 10,000 of
them, which is very expensive. Assuming all pages are accessed with equal fre-
quency, such queries scan half the table on average. To optimize them, you can
either limit how many pages are permitted in a pagination view, or try to make the
high offsets more efficient.
One simple technique to improve efficiency is to do the offset on a covering index,
rather than the full rows. You can then join the result to the full row and retrieve the
additional columns you need. This can be much more efficient. Consider the follow-
ing query:
mysql> SELECT film_id, description FROM sakila.film ORDER BY title LIMIT 50, 5;
If the table is very large, this query is better written as follows:
mysql> SELECT film.film_id, film.description
    -> FROM sakila.film
    ->    INNER JOIN (
    ->       SELECT film_id FROM sakila.film
    ->       ORDER BY title LIMIT 50, 5
    ->    ) AS lim USING(film_id);
This works because it lets the server examine as little data as possible in an index
without accessing rows, and then, once the desired rows are found, join them against
the full table to retrieve the other columns from the row. A similar technique applies
to joins with LIMIT clauses.

==============================================================

--EOF--

SSH帐号恢复,备份升级完成

| No Comments
1.FastDomain的工作人员的效率还是非常高,提交Ticket之后几分钟就收到了QQ Mail中的回信。
2.备份,升级过程非常顺利,实际只是升级MT的Professional Pack。
3.简单修改了一下模板,将评论部分去掉了。
4.针对类目的模版页,本来想修改一下,将默认的最近10个Post扩大一下,但发现这个和首页好像也是使用同一个变量,还是算了。

--EOF--

FastDomain shell帐号被无故关闭

| No Comments
好久没ssh进去了,今天准备做数据备份和做MT5.04 升级却发现无法登录,相关信息如下:

Your shell account is NOT enabled.

Please FAX the following message to +1 (801) 765-1992:

=====================================================
From: xxx@xxx.com
Subject: ENABLE SHELL xxx@guduo.net

+-------------------------+
|                         |
|                         |
|   BLOW UP OF PHOTO ID   |
|                         |
|                         |
+-------------------------+


Or, submit a ticket to our helpdesk at:
http://helpdesk.fastdomain.com/

Or scan and send your PHOTO ID as an email attachment.

现在都感觉有些担心了?为啥需要我提供这个信息?

不过比较奇怪的一点是,plink居然还是可以正常访问做ssh tunnel的。

--EOF--

Pages

May 2016

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

About this Archive

This page is an archive of entries from December 2010 listed from newest to oldest.

November 2010 is the previous archive.

January 2011 is the next archive.

Find recent content on the main index or look in the archives to find all content.