??xml version="1.0" encoding="utf-8" standalone="yes"?>四虎成人精品一区二区免费网站,国产精品视频二区三区,你懂的亚洲视频http://www.aygfsteel.com/OpenCloseD/category/15136.html!Qrdinary zh-cnThu, 21 Jun 2007 18:14:46 GMTThu, 21 Jun 2007 18:14:46 GMT60Speeding up InnoDB Insert by Changing Default Settingshttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125451.html开?/dc:creator>开?/author>Wed, 20 Jun 2007 18:51:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125451.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/125451.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125451.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/125451.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/125451.htmlInnoDB default options are very conservative and in several situations increasing the buffers can have a high impact on the performance. E.g. for speeding up inserts on a InnoDB-only setup, the rule of a thumb is to set the innodb_buffer_pool size to 50-80% of your computer's memory and to set innodb_log_file_size to about 25% of the innodb_buffer_pool_size.

If you are running your program on several threads, which all work on
the InnoDB table(s) you might want to also set
innodb_flush_log_at_trx_commit=0
This adds some risk of losing some transactions in the case of a
power failure or an unclean mysqld shutdown, but it can improve
speed.

Please note that when inserting several rows at once in InnoDB table, it is fastest, if the rows are inserted in Primary Key order. This is because of the clustered index, which InnoDB always uses.

If your system has a mix of several table handlers, then it is harder to provide good general settings for improving the speed, as the option settings heavily depend on your overall system design. In such cases you can contact us at consulting@mysql.com, and purchase online consulting. In Online Consulting our developers will log into your system and they will do extensive analysis of your system's requirements. Based on the research they can set proper settings for your MySQL installation or they can give you advice, how to make the needed changes by yourself in order to gain better performance.




http://www.mysql.com/news-and-events/newsletter/2003-11/a0000000269.html

]]>
my.ini详解及mysqld优化讲述http://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125450.html开?/dc:creator>开?/author>Wed, 20 Jun 2007 18:35:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125450.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/125450.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125450.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/125450.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/125450.htmlhttp://bbs.muzone.cn/thread-107946-1-1.html

]]>
恢复mysql数据http://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125449.html开?/dc:creator>开?/author>Wed, 20 Jun 2007 18:34:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125449.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/125449.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125449.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/125449.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/125449.html MY-SQL常用命o

一、连接MYSQL?

格式Q?mysql -hL地址 -u用户?Qp用户密码

1、例1Q连接到本机上的MYSQL?

首先在打开DOSH口Q然后进入目?mysqlbinQ再键入命omysql -uroot -pQ回车后提示你输密码Q如果刚安装好MYSQLQ超U用户root是没有密码的Q故直接回R卛_q入到MYSQL中了QMYSQL的提C符是:mysql>

2、例2Q连接到q程L上的MYSQL。假设远E主机的IP为:110.110.110.110Q用户名为root,密码为abcd123。则键入以下命oQ?

mysql -h110.110.110.110 -uroot -pabcd123

Q注:u与root可以不用加空|其它也一P

3、退出MYSQL命oQ?exit Q回车)

二、修改密码?

格式Qmysqladmin -u用户?-p旧密?password 新密?

1、例1Q给root加个密码ab12。首先在DOS下进入目录mysqlbinQ然后键入以下命?

mysqladmin -uroot -password ab12

注:因ؓ开始时root没有密码Q所?p旧密码一就可以省略了?

2、例2Q再root的密码改为djg345?

mysqladmin -uroot -pab12 password djg345

三、增加新用户。(注意Q和上面不同Q下面的因ؓ是MYSQL环境中的命oQ所以后面都带一个分号作为命令结束符Q?

格式Qgrant select on 数据?* to 用户名@dL identified by \"密码\"

?、增加一个用户test1密码为abcQ让他可以在ML上登录,q对所有数据库有查询、插入、修攏V删除的权限。首先用以root用户q入MYSQLQ然后键入以下命令:

grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";

但例1增加的用h十分危险的,你想如某个h知道test1的密码,那么他就可以在internet上的M一台电脑上d你的mysql数据库ƈ对你的数据可以ؓ所Ʋؓ了,解决办法见例2?

?、增加一个用户test2密码为abc,让他只可以在localhost上登录,q可以对数据库mydbq行查询、插入、修攏V删除的操作Qlocalhost指本C机,即MYSQL数据库所在的那台LQ,q样用户即用知道test2的密码,他也无法从internet上直接访问数据库Q只能通过MYSQLL上的web|讉K了?

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";

如果你不想test2有密码,可以再打一个命令将密码消掉?

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";

在上我们讲了登录、增加用戗密码更改等问题。下我们来看看MYSQL中有x据库斚w的操作。注意:你必首先登录到MYSQL中,以下操作都是在MYSQL的提C符下进行的Q而且每个命o以分L束?

一、操作技?

1、如果你打命令时Q回车后发现忘记加分P你无重打一遍命令,只要打个分号回R可以了。也是说你可以把一个完整的命o分成几行来打Q完后用分号作结束标志就OK?

2、你可以使用光标上下键调Z前的命o。但以前我用q的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win?

二、显C命?

1、显C数据库列表?

show databases;

刚开始时才两个数据库Qmysql和test。mysql库很重要它里面有MYSQL的系l信息,我们改密码和新增用户Q实际上是用这个库q行操作?

2、显C库中的数据表:

use mysqlQ?Q/打开库,学过FOXBASE的一定不会陌生吧

show tables;

3、显C数据表的结构:

describe 表名;

4、徏库:

create database 库名;

5、徏表:

use 库名Q?

create table 表名 (字段讑֮列表)Q?

6、删库和删表:

drop database 库名;

drop table 表名Q?

7、将表中记录清空Q?

delete from 表名;

8、显C中的记录Q?

select * from 表名;

三、一个徏库和以及插入数据的实?

drop database if exists school; //如果存在SCHOOL则删?

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ’深圳’,

year date

); //l束

//以下为插入字D?

insert into teacher values(’’,’glchengang’,’深圳一?#8217;,’1976-10-10’);

insert into teacher values(’’,’jack’,’深圳一?#8217;,’1975-12-23’);

注:在徏表中Q?Q将ID设ؓ长度?的数字字D?int(3)q让它每个记录自动加一:auto_incrementq不能ؓI?not null而且让他成ؓdDprimary keyQ?Q将NAME设ؓ长度?0的字W字D(3Q将ADDRESS设ؓ长度50的字W字D,而且~省gؓ深圳。varchar和char有什么区别呢Q只有等以后的文章再说了。(4Q将YEAR设ؓ日期字段?

如果你在mysql提示W键入上面的命o也可以,但不方便调试。你可以以上命令原样写入一个文本文件中假设为school.sqlQ然后复制到c:\\下,q在DOS状态进入目录\\mysql\\binQ然后键入以下命令:

mysql -uroot -p密码 < c:\\school.sql

如果成功Q空Z行无M昄Q如有错误,会有提示。(以上命o已经调试Q你只要?/的注释去掉即可用)?

四、将文本数据转到数据库中

1、文本数据应W合的格式:字段数据之间用tab键隔开Qnull值用\\n来代?

例:

3 rose 深圳二中 1976-10-10

4 mike 深圳一?1975-12-23

2、数据传入命?load data local infile \"文g名\" into table 表名;

注意Q你最好将文g复制到\\mysql\\bin目录下,q且要先用use命o打表所在的库?

五、备份数据库Q(命o在DOS的\\mysql\\bin目录下执行)

mysqldump --opt school>school.bbb

注释:数据库school备䆾到school.bbb文gQschool.bbb是一个文本文Ӟ文g名Q取,打开看看你会有新发现?

后记Q其实MYSQL的对数据库的操作与其它的SQLcL据库大同异Q您最好找本将SQL的书看看。我在这里只介绍一些基本的Q其实我也就只懂q些了,呵呵。最好的MYSQL教程q是“晏子“译的“MYSQL中文参考手?#8220;不仅免费每个相关|站都有下蝲Q而且它是最权威的。可惜不是象\"PHP4中文手册\"那样是chm的格式,在查扑և数命令的时候不太方ѝ?/div>

]]>mysql常用命ohttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125448.html开?/dc:creator>开?/author>Wed, 20 Jun 2007 18:20:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125448.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/125448.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/21/125448.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/125448.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/125448.html
MY-SQL常用命o

一、连接MYSQL?

格式Q?mysql -hL地址 -u用户?Qp用户密码

1、例1Q连接到本机上的MYSQL?

首先在打开DOSH口Q然后进入目?mysqlbinQ再键入命omysql -uroot -pQ回车后提示你输密码Q如果刚安装好MYSQLQ超U用户root是没有密码的Q故直接回R卛_q入到MYSQL中了QMYSQL的提C符是:mysql>

2、例2Q连接到q程L上的MYSQL。假设远E主机的IP为:110.110.110.110Q用户名为root,密码为abcd123。则键入以下命oQ?

mysql -h110.110.110.110 -uroot -pabcd123

Q注:u与root可以不用加空|其它也一P

3、退出MYSQL命oQ?exit Q回车)

二、修改密码?

格式Qmysqladmin -u用户?-p旧密?password 新密?

1、例1Q给root加个密码ab12。首先在DOS下进入目录mysqlbinQ然后键入以下命?

mysqladmin -uroot -password ab12

注:因ؓ开始时root没有密码Q所?p旧密码一就可以省略了?

2、例2Q再root的密码改为djg345?

mysqladmin -uroot -pab12 password djg345

三、增加新用户。(注意Q和上面不同Q下面的因ؓ是MYSQL环境中的命oQ所以后面都带一个分号作为命令结束符Q?

格式Qgrant select on 数据?* to 用户名@dL identified by \"密码\"

?、增加一个用户test1密码为abcQ让他可以在ML上登录,q对所有数据库有查询、插入、修攏V删除的权限。首先用以root用户q入MYSQLQ然后键入以下命令:

grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";

但例1增加的用h十分危险的,你想如某个h知道test1的密码,那么他就可以在internet上的M一台电脑上d你的mysql数据库ƈ对你的数据可以ؓ所Ʋؓ了,解决办法见例2?

?、增加一个用户test2密码为abc,让他只可以在localhost上登录,q可以对数据库mydbq行查询、插入、修攏V删除的操作Qlocalhost指本C机,即MYSQL数据库所在的那台LQ,q样用户即用知道test2的密码,他也无法从internet上直接访问数据库Q只能通过MYSQLL上的web|讉K了?

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";

如果你不想test2有密码,可以再打一个命令将密码消掉?

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";

在上我们讲了登录、增加用戗密码更改等问题。下我们来看看MYSQL中有x据库斚w的操作。注意:你必首先登录到MYSQL中,以下操作都是在MYSQL的提C符下进行的Q而且每个命o以分L束?

一、操作技?

1、如果你打命令时Q回车后发现忘记加分P你无重打一遍命令,只要打个分号回R可以了。也是说你可以把一个完整的命o分成几行来打Q完后用分号作结束标志就OK?

2、你可以使用光标上下键调Z前的命o。但以前我用q的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win?

二、显C命?

1、显C数据库列表?

show databases;

刚开始时才两个数据库Qmysql和test。mysql库很重要它里面有MYSQL的系l信息,我们改密码和新增用户Q实际上是用这个库q行操作?

2、显C库中的数据表:

use mysqlQ?Q/打开库,学过FOXBASE的一定不会陌生吧

show tables;

3、显C数据表的结构:

describe 表名;

4、徏库:

create database 库名;

5、徏表:

use 库名Q?

create table 表名 (字段讑֮列表)Q?

6、删库和删表:

drop database 库名;

drop table 表名Q?

7、将表中记录清空Q?

delete from 表名;

8、显C中的记录Q?

select * from 表名;

三、一个徏库和以及插入数据的实?

drop database if exists school; //如果存在SCHOOL则删?

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ’深圳’,

year date

); //l束

//以下为插入字D?

insert into teacher values(’’,’glchengang’,’深圳一?#8217;,’1976-10-10’);

insert into teacher values(’’,’jack’,’深圳一?#8217;,’1975-12-23’);

注:在徏表中Q?Q将ID设ؓ长度?的数字字D?int(3)q让它每个记录自动加一:auto_incrementq不能ؓI?not null而且让他成ؓdDprimary keyQ?Q将NAME设ؓ长度?0的字W字D(3Q将ADDRESS设ؓ长度50的字W字D,而且~省gؓ深圳。varchar和char有什么区别呢Q只有等以后的文章再说了。(4Q将YEAR设ؓ日期字段?

如果你在mysql提示W键入上面的命o也可以,但不方便调试。你可以以上命令原样写入一个文本文件中假设为school.sqlQ然后复制到c:\\下,q在DOS状态进入目录\\mysql\\binQ然后键入以下命令:

mysql -uroot -p密码 < c:\\school.sql

如果成功Q空Z行无M昄Q如有错误,会有提示。(以上命o已经调试Q你只要?/的注释去掉即可用)?

四、将文本数据转到数据库中

1、文本数据应W合的格式:字段数据之间用tab键隔开Qnull值用\\n来代?

例:

3 rose 深圳二中 1976-10-10

4 mike 深圳一?1975-12-23

2、数据传入命?load data local infile \"文g名\" into table 表名;

注意Q你最好将文g复制到\\mysql\\bin目录下,q且要先用use命o打表所在的库?

五、备份数据库Q(命o在DOS的\\mysql\\bin目录下执行)

mysqldump --opt school>school.bbb

注释:数据库school备䆾到school.bbb文gQschool.bbb是一个文本文Ӟ文g名Q取,打开看看你会有新发现?

后记Q其实MYSQL的对数据库的操作与其它的SQLcL据库大同异Q您最好找本将SQL的书看看。我在这里只介绍一些基本的Q其实我也就只懂q些了,呵呵。最好的MYSQL教程q是“晏子“译的“MYSQL中文参考手?#8220;不仅免费每个相关|站都有下蝲Q而且它是最权威的。可惜不是象\"PHP4中文手册\"那样是chm的格式,在查扑և数命令的时候不太方ѝ?/div>

]]>MySQL优化l验http://www.aygfsteel.com/OpenCloseD/archive/2007/06/13/123745.html开?/dc:creator>开?/author>Tue, 12 Jun 2007 18:55:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/13/123745.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/123745.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/13/123745.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/123745.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/123745.htmlMySQL优化l验

WikipediaQ自q癄全书

同时在线讉K量l增?对于1G内存的服务器明显感觉到吃力严重时甚至每天都会L 或者时不时的服务器卡一?q个问题曄困扰了我半个多月MySQL使用是很具׾~性的法Q因此你通常能用很少的内存运行或lMySQL更多的被存以得到更好的性能?

安装好mysql后,配制文g应该?usr/local/mysql/share/mysql目录中,配制文g有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的|站和不同配制的服务器环境,当然需要有不同的配制文件了?

一般的情况下,my-medium.cnfq个配制文gp满我们的大多需要;一般我们会把配|文件拷贝到/etc/my.cnf 只需要修改这个配|文件就可以了,使用mysqladmin variables extended-status –u root –p 可以看到目前的参敎ͼ有3个配|参数是最重要的,即key_buffer_size,query_cache_size,table_cache?

key_buffer_size只对MyISAM表v作用Q?

key_buffer_size指定索引~冲区的大小Q它军_索引处理的速度Q尤其是索引ȝ速度。一般我们设?6M,实际上稍微大一点的站点 q个数字是远q不够的Q通过查状态值Key_read_requests和Key_reads,可以知道key_buffer_size讄是否合理。比例key_reads / key_read_requests应该可能的低,臛_?:100Q?:1000更好Q上q状态值可以用SHOW STATUS LIKE ‘key_read%’获得Q?或者如果你装了phpmyadmin 可以通过服务器运行状态看?W者推荐用phpmyadmin理mysqlQ以下的状态值都是本人通过phpmyadmin获得的实例分?

q个服务器已l运行了20?

key_buffer_size – 128M
key_read_requests – 650759289
key_reads - 79112

比例接近1:8000 健康状况非常?

另外一个估计key_buffer_size的办法 把你|站数据库的每个表的索引所占空间大加h看看以此服务器ؓ?比较大的几个表烦引加h大概125M q个数字会随着表变大而变大?

?.0.1开始,MySQL提供了查询缓冲机制。用查询缓ԌMySQLSELECT语句和查询结果存攑֜~冲ZQ今后对于同LSELECT语句Q区分大写Q,直接从~冲Zdl果。根据MySQL用户手册Q用查询缓冲最多可以达?38%的效率?

通过调节以下几个参数可以知道query_cache_size讄得是否合?

Qcache inserts
Qcache hits
Qcache lowmem prunes
Qcache free blocks
Qcache total blocks

Qcache_lowmem_prunes的值非常大Q则表明l常出现~冲不够的情?同时Qcache_hits的值非常大Q则表明查询~冲使用非常频繁Q此旉要增加缓冲大Qcache_hits的g大,则表明你的查询重复率很低Q这U情况下使用查询~冲反而会影响效率Q那么可以考虑不用查询~冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不用查询缓册Ӏ?

Qcache_free_blocksQ如果该值非常大Q则表明~冲Z片很多query_cache_type指定是否使用查询~冲

我设|?

query_cache_size = 32M
query_cache_type= 1

得到如下状态?

Qcache queries in cache 12737 表明目前~存的条?
Qcache inserts 20649006
Qcache hits 79060095  看来重复查询率还挺高?
Qcache lowmem prunes 617913 有这么多ơ出现缓存过低的情况
Qcache not cached 189896   
Qcache free memory 18573912  目前剩余~存I间
Qcache free blocks 5328 q个数字g有点大 片不少
Qcache total blocks 30953

如果内存允许32M应该要往上加?

table_cache指定表高速缓存的大小。每当MySQL讉K一个表Ӟ如果在表~冲Zq有I间Q该表就被打开q放入其中,q样可以更快地访问表内容。通过查峰值时间的状态值Open_tables和Opened_tablesQ可以决定是否需要增加table_cache的倹{如果你发现open_tables{于table_cacheQƈ且opened_tables在不断增长,那么你就需要增加table_cache的gQ上q状态值可以用SHOW STATUS LIKE ‘Open%tables’获得Q。注意,不能盲目地把table_cache讄成很大的倹{如果设|得太高Q可能会造成文g描述W不I从而造成性能不稳定或者连接失败?

对于?G内存的机器,推荐值是128Q?56?

W者设|table_cache = 256

得到以下状?

Open tables 256
Opened tables 9046

虽然open_tables已经{于table_cacheQ但是相对于服务器运行时间来?已经q行?0天,opened_tables的g非常低。因此,增加table_cache的值应该用处不大。如果运行了6个小时就出现上述?那就要考虑增大table_cache?

如果你不需要记?q制log 把q个功能xQ注意关掉以后就不能恢复出问题前的数据了Q需要您手动备䆾Q二q制日志包含所有更新数据的语句Q其目的是在恢复数据库时用它来把数据可能恢复到最后的状态。另外,如果做同步复? Replication )的话Q也需要用二q制日志传送修Ҏc?

log_bin指定日志文gQ如果不提供文g名,MySQL自׃生缺省文件名。MySQL会在文g名后面自动添加数字引Q每ơ启动服务时Q都会重新生成一个新的二q制文g。此外,使用log-bin-index可以指定索引文gQ用binlog-do-db可以指定记录的数据库Q用binlog-ignore-db可以指定不记录的数据库。注意的是:binlog-do-db和binlog-ignore-db一ơ只指定一个数据库Q指定多个数据库需要多个语句。而且QMySQL会将所有的数据库名U改成小写,在指定数据库时必d部用小写名字,否则不会起作用?

xq个功能只需要在他前面加??

#log-bin

开启慢查询日志( slow query log ) 慢查询日志对于跟t有问题的查询非常有用。它记录所有查qlong_query_time的查询,如果需要,q可以记录不使用索引的记录。下面是一个慢查询日志的例子:

开启慢查询日志Q需要设|参数log_slow_queries、long_query_times、log-queries-not-using-indexes?

log_slow_queries指定日志文gQ如果不提供文g名,MySQL自׃生缺省文件名。long_query_times指定慢查询的阈|~省?0U。log-queries-not-using-indexes?.1.0以后引入的参敎ͼ它指C录不使用索引的查询。笔者设|long_query_time=10

W者设|?

sort_buffer_size = 1M
max_connections=120
wait_timeout =120
back_log=100
read_buffer_size = 1M
thread_cache=32
interactive_timeout=120
thread_concurrency = 4

参数说明:

back_log

要求MySQL能有的连接数量。当主要MySQLU程在一个很短时间内得到非常多的q接hQ这pv作用Q然后主U程׃旉(管很短)查连接ƈ且启动一个新U程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短旉内有很多q接Q你需要增加它Q换句话_q值对到来的TCP/IPq接的侦听队列的大小。你的操作系l在q个队列大小上有它自q限制?Unix listen(2)pȝ调用的手册页应该有更多的l节。检查你的OS文档扑ևq个变量的最大倹{试图设定back_log高于你的操作pȝ的限制将是无效的?

max_connections

q发q接数目最大,120 过q个值就会自动恢复,Z问题能自动解?

thread_cache

没找到具体说明,不过讄?2?20天才创徏?00多个U程 而以前一天就创徏了上千个U程 所以还是有用的

thread_concurrency

#讄Z的cpu数目x2,例如Q只有一个cpu,那么thread_concurrency=2
#?个cpu,那么thread_concurrency=4
skip-innodb
#Linnodb支持

代码:

# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock #socket = /var/lib/mysql/mysql.sock # Here follows entries for some specific programs
# The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock #socket = /var/lib/mysql/mysql.sock skip-locking key_buffer = 128M max_allowed_packet = 1M table_cache = 256 sort_buffer_size = 1M net_buffer_length = 16K myisam_sort_buffer_size = 1M max_connections=120 #addnew config wait_timeout =120 back_log=100 read_buffer_size = 1M thread_cache=32 skip-innodb skip-bdb skip-name-resolve join_buffer_size=512k query_cache_size = 32M interactive_timeout=120 long_query_time=10 log_slow_queries= /usr/local/mysql4/logs/slow_query.log query_cache_type= 1 # Try number of CPU's*2 for thread_concurrency thread_concurrency = 4
#end new config # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking
# Replication Master Server (default) # binary logging is required for replication #log-bin
# required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1
# Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, # MASTER_USER=, MASTER_PASSWORD= ; # # where you replace , , by quoted strings and # by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = # # The username the slave will use for authentication when connecting # to the master - required #master-user = # # The password the slave will authenticate with when connecting to # the master - required #master-password = # # The port the master is listening on. # optional - defaults to 3306 #master-port = # # binary logging - not required for slaves, but recommended #log-bin
# Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname
# Uncomment the following if you are using BDB tables #bdb_cache_size = 4M #bdb_max_lock = 10000
# Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /var/lib/mysql/ #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /var/lib/mysql/ #innodb_log_arch_dir = /var/lib/mysql/ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50
[mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates
[isamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M
[myisamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M
[mysqlhotcopy] interactive-timeout

补充

优化table_cachetable_cache指定表高速缓存的大小。每当MySQL讉K一个表Ӟ如果在表~冲Zq有I间Q该表就被打开q放入其中,q样可以更快地访问表内容。通过查峰值时间的状态值Open_tables和Opened_tablesQ可以决定是否需要增加table_cache的倹{如果你发现open_tables{于table_cacheQƈ且opened_tables在不断增长,那么你就需要增加table_cache的gQ上q状态值可以用SHOW STATUS LIKE ‘Open%tables’获得Q。注意,不能盲目地把table_cache讄成很大的倹{如果设|得太高Q可能会造成文g描述W不I从而造成性能不稳定或者连接失败。对于有1G内存的机器,推荐值是128Q?56?

案例1Q该案例来自一个不是特别繁忙的服务器table_cache – 512open_tables – 103opened_tables – 1273uptime – 4021421 (measured in seconds)该案例中table_cacheg讄得太高了。在峰值时_打开表的数目比table_cache要少得多?

案例2Q该案例来自一台开发服务器。table_cache – 64open_tables – 64opened-tables – 431uptime – 1662790 (measured in seconds)虽然open_tables已经{于table_cacheQ但是相对于服务器运行时间来_opened_tables的g非常低。因此,增加table_cache的值应该用处不大。案?Q该案例来自一个upderperforming的服务器table_cache – 64open_tables – 64opened_tables – 22423uptime – 19538该案例中table_cache讄得太低了。虽然运行时间不?时Qopen_tables辑ֈ了最大|opened_tables的g非常高。这样就需要增加table_cache的倹{优化key_buffer_sizekey_buffer_size指定索引~冲区的大小Q它军_索引处理的速度Q尤其是索引ȝ速度。通过查状态值Key_read_requests和Key_readsQ可以知道key_buffer_size讄是否合理。比例key_reads / key_read_requests应该可能的低,臛_?:100Q?:1000更好Q上q状态值可以用SHOW STATUS LIKE ‘key_read%’获得Q。key_buffer_size只对MyISAM表v作用。即使你不用MyISAM表,但是内部的时磁盘表是MyISAM表,也要使用该倹{可以用检查状态值created_tmp_disk_tables得知详情。对?G内存的机器,如果不用MyISAM表,推荐值是16MQ?-64MQ?

案例1Q健L况key_buffer_size – 402649088 (384M)key_read_requests – 597579931key_reads - 56188案例2Q警报状态key_buffer_size – 16777216 (16M)key_read_requests – 597579931key_reads - 53832731案例1中比例低?:10000Q是健康的情况;案例2中比例达?:11Q警报已l拉响?



]]>
mysql bakuphttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/13/123744.html开?/dc:creator>开?/author>Tue, 12 Jun 2007 18:45:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/13/123744.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/123744.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2007/06/13/123744.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/123744.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/123744.htmlphpmyadmin里边一看全是ؕ?后重新看了mysql 5.0的手?发现加了几个character_set_%,不过改了N^2ơ还是没能搞?但是用PHPE序select出来的却又是正常?问题是PHPMyadmin的问题了..

  ?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">phpMyAdmin2.6以上版本因ؓ支持多语a集,弄得我们使用phpMyAdmin理数据库的时候,查询出来的中文都是ؕ码,但是在我们的PHPE序调用时却没有q些问题?
  看来?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">phpMyAdmin2.6的配|有问题了,Z解决q个问题Q我上google上搜索了相关资料Q这cȝ问题很多Q但没一个可以解决的Q真是没办法Q看来只有自己动手解决了。。。。由于查找源代码q程非常烦琐Q略最l花了半天的旉Qȝ扑ֈ了一个比较折LҎ来解冟뀂去phpMyAdmin2.6的根目录下,打开以下q个文gQlibraries/select_lang.lib.php

  1、找到有"zh-gb2312"的那一行,?zh-gb2312' Ҏ 'zh-gb2312-utf-8'Z么这样加Q那是因为服务器会把没有"-utf-8"的语aqo掉,在libraries/database_interface.lib.php W?68行,Ҏ英文_“Z防止h”Q?<或者如果不?zh-gb2312' Ҏ 'zh-gb2312-utf-8'Q可以去掉过滤吧。把那个ifLOK了?

  2、找?$mysql_charset_map = array("那一行把'gb2312' => 'gb2312',Ҏ 'gb2312' => 'latin1',保存QOKQ在q入phpMyAdmin理Q选择语言chinese simplified(zh-gb2312-utf-8)再看看你的那些中文数据?

  所以说Q我的这个解军_法就只是修改libraries/select_lang.lib.phpq一个文仉的两个字pQ比较方便快P哈哈?
ps:q个帖子的方法非常好用,推荐Q?/div>

- 作者: FS8C 2006q?2?9? 星期?15:37  回复Q?Q?/font> |  引用Q?Q?/font> 加入博采

MySQL 备䆾和恢?转脓)

MySQL 备䆾和恢?

MySQL 备䆾和恢?/h1>

作者:叉荣(Email:Q,来源Q?a >http://imysql.cnQ{载请注明译者和出处Qƈ且不能用于商业用途,q者必I?/span>

日期Q?006/10/01

本文讨论 MySQL 的备份和恢复机制Q以及如何维护数据表Q包括最主要的两U表cdQ?code> ?Q文中设计的 MySQL 版本?5.0.22?/p>

目前 MySQL 支持的免费备份工hQ?code>Q还可以?SQL 语法q行备䆾Q?code> 或?Q又或者备?code>Q还可以?code>。MyISAM 表是保存成文件的形式Q因此相Ҏ较容易备份,上面提到的几U方法都可以使用?code> 所有的表都保存在同一个数据文? 中(也可能是多个文gQ或者是独立的表I间文gQ,相对来说比较不好备䆾Q免费的Ҏ可以?code>?code>Q或者用 ?/p>

1、mysqldump

1.1 备䆾

是采用SQLU别的备份机Ӟ它将数据表导?SQL 脚本文gQ在不同?MySQL 版本之间升时相Ҏ较合适,q也是最常用的备份方法?br>现在来讲一? 的一些主要参敎ͼ

  • --compatible=name

    它告?mysqldumpQ导出的数据和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以ؓ {,要用几个|用逗号它们隔开。当然了Q它q不保证能完全兼容,而是量兼容?

  • --complete-insertQ?c

    导出的数据采用包含字D名的完? 方式Q也是把所有的值都写在一行。这么做能提高插入效率,但是可能会受? 参数的媄响而导致插入失败。因此,需要}慎用该参数Q至我不推荐?

  • --default-character-set=charset

    指定导出数据旉用何U字W集Q如果数据表不是采用默认? 字符集的话,那么导出时必L定该选项Q否则再ơ导入数据后生ؕ码问题?/p>

  • --disable-keys

    告诉 ? 语句的开头和l尾增加 ? 语句Q这能大大提高插入语句的速度Q因为它是在插入完所有数据后才重建烦引的。该选项只适合 表?/p>

  • --extended-insert = true|false

    默认情况下, 开? 模式Q因此不想用它的的话Q就使用本选项Q设定它的gؓ 卛_?

  • --hex-blob

    使用十六q制格式导出二进制字W串字段。如果有二进制数据就必须使用本选项。媄响到的字D늱型有 ?/p>

  • --lock-all-tablesQ?x

    在开始导Z前,提交h锁定所有数据库中的所有表Q以保证数据的一致性。这是一个全局读锁Qƈ且自动关? ? 选项?/p>

  • --lock-tables

    它和 cMQ不q是锁定当前导出的数据表Q而不是一下子锁定全部库下的表。本选项只适用? 表,如果? 表可以用 选项?/p>

  • --no-create-infoQ?t

    只导出数据,而不d 语句?/p>

  • --no-dataQ?d

    不导ZQ何数据,只导出数据库表结构?/p>

  • --opt

    q只是一个快捷选项Q等同于同时d 选项。本选项能让 很快的导出数据,q且导出的数据能很快导回。该选项默认开启,但可以用 用。注意,如果q行 没有指定 ? 选项Q则会将整个l果集放在内存中。如果导出大数据库的话可能会出现问题?/p>

  • --quickQ?q

    该选项在导出大表时很有用,它强? 从服务器查询取得记录直接输出而不是取得所有记录后它们缓存到内存中?/p>

  • --routinesQ?R

    导出存储q程以及自定义函数?/p>

  • --single-transaction

    该选项在导出数据之前提交一? SQL语句Q?code> 不会dM应用E序且能保证导出时数据库的一致性状态。它只适用于事务表Q例? ??br>本选项? 选项是互斥的Q因? 会M挂v的事务隐含提交?br>要想导出大表的话Q应l合使用 选项?

  • --triggers

    同时导出触发器。该选项默认启用Q用 用它?/p>

其他参数详情请参考手册,我通常使用以下 SQL 来备? 表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false \
--triggers -R --hex-blob -x db_name > db_name.sql

使用以下 SQL 来备? 表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false \
--triggers -R --hex-blob --single-transaction db_name > db_name.sql

 

1.2 q原

? 备䆾出来的文件是一个可以直接倒入?SQL 脚本Q有两种Ҏ可以数据导入?/p>

  • 直接? 客户?

    例如Q?/p>

    /usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
        

     

  • ?SOURCE 语法

    其实q不是标准的 SQL 语法Q而是 客户端提供的功能Q例如:

    SOURCE /tmp/db_name.sql;
        

    q里需要指定文件的l对路径Qƈ且必L q行用户(例如 nobody)有权限读取的文g?/p>

2?mysqlhotcopy

2.1 备䆾

是一?PERL E序Q最初由Tim Bunce~写。它使用 ? ? 来快速备份数据库。它是备份数据库或单个表的最快的途径Q但它只能运行在数据库文Ӟ包括数据表定义文件、数据文件、烦引文Ӟ所在的机器上?code> 只能用于备䆾 Qƈ且只能运行在 ? pȝ上?/p>

支持一ơ性拷贝多个数据库Q同时还支持正则表达。以下是几个例子Q?/p>

root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name /tmp (把数据库目录 db_name 拯?/tmp ?
root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name_1 ... db_name_n /tmp
root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name./regex/ /tmp

更详l的使用Ҏh看手册,或者调用下面的命o来查? 的帮助:

perldoc /usr/local/mysql/bin/mysqlhotcopy

注意Q想要?Q必要? 权限Qƈ且还必须要能够有d 目录的权限?

2.2 q原

备䆾出来的是整个数据库目录,使用时可以直接拷贝到 指定? (在这里是 )目录下即可,同时要注意权限的问题Q如下例Q?/p>

root#cp -rf db_name /usr/local/mysql/data/
root#chown -R nobody:nobody /usr/local/mysql/data/ (?db_name 目录的属L?mysqld q行用户)

3?SQL 语法备䆾

3.1 备䆾

语法其实? 的工作原理差不多Q都是锁表,然后拯数据文g。它能实现在U备份,但是效果不理惻I因此不推荐用。它只拷贝表l构文g和数据文Ӟ不同时拷贝烦引文Ӟ因此恢复时比较慢?br>例子Q?/p>

BACK TABLE tbl_name TO '/tmp/db_name/';

注意Q必要? 权限才能执行本SQLQƈ且目? 必须能被 用户可写Q导出的文g不能覆盖已经存在的文Ӟ以避免安全问题?

则是把数据导出来成ؓ普通的文本文gQ可以自定义字段间隔的方式,方便处理q些数据?br>例子Q?/p>

SELECT INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name;

注意Q必要? 权限才能执行本SQLQƈ且文? 必须能被 用户可写Q导出的文g不能覆盖已经存在的文Ӟ以避免安全问题?

3.2 恢复

? Ҏ备䆾出来的文Ӟ可以q行 语句来恢复数据表?br>例子Q?/p>

RESTORE TABLE FROM '/tmp/db_name/';

权限要求cM上面所q?/p>

? Ҏ备䆾出来的文Ӟ可以q行 语句来恢复数据表?br>例子Q?/p>

LOAD DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name;

权限要求cM上面所q。倒入数据之前Q数据表要已l存在才行。如果担心数据会发生重复Q可以增? 关键字来替换已有记录或者用 关键字来忽略他们?/p>

4?启用二进制日?binlog)

采用 的方法相Ҏ说更灉|Q省心省力,而且q可以支持增量备份?/p>

启用 时必要重启 。首先,关闭 Q打开 Q加入以下几行:

server-id	= 1
log-bin		= binlog
log-bin-index	= binlog.index

然后启动 可以了。运行过E中会? 以及 Q前面的文g? 记录所有对数据的更新操作,后面的文件则是所? 的烦引,都不能轻易删除。关? 的信息请查看手册?/p>

需要备份时Q可以先执行一?SQL 语句Q让 l止对当? 的写入,可以把文g直接备䆾Q这L话就能达到增量备份的目的了:

FLUSH LOGS;

如果是备份复制系l中的从服务器,q应该备? ? 文g?

备䆾出来? 文g可以?MySQL 提供的工? 来查看,如:

/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001

该工具允怽昄指定的数据库下的所?SQL 语句Qƈ且还可以限定旉范围Q相当的方便Q详l的h看手册?/p>

恢复Ӟ可以采用cM以下语句来做刎ͼ

/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name

? 输出?SQL 语句直接作ؓ输入来执行它?/p>

如果你有I闲的机器,不妨采用q种方式来备份。由于作? 的机器性能要求相对不是那么高,因此成本低,用低成本p实现增量备䆾而且q能分担一部分数据查询压力Q何乐而不为呢Q?/p>

5?直接备䆾数据文g

相较前几U方法,备䆾数据文g最为直接、快速、方便,~点是基本上不能实现增量备䆾。ؓ了保证数据的一致性,需要在靠背文g前,执行以下 SQL 语句Q?/p>

FLUSH TABLES WITH READ LOCK;

也就是把内存中的数据都刷新到盘中,同时锁定数据表,以保证拷贝过E中不会有新的数据写入。这U方法备份出来的数据恢复也很单,直接拯回原来的数据库目录下卛_?/p>

注意Q对? cd表来_q需要备份其日志文gQ即 文g。因为当 表损坏时Q就可以依靠q些日志文g来恢复?/p>

6?备䆾{略

对于中等U别业务量的pȝ来说Q备份策略可以这么定Q第一ơ全量备份,每天一ơ增量备份,每周再做一ơ全量备份,如此一直重复。而对于重要的且繁忙的pȝ来说Q则可能需要每天一ơ全量备份,每小时一ơ增量备份,甚至更频J。ؓ了不影响U上业务Q实现在U备份,q且能增量备份,最好的办法是采用M复制机制()Q在 机器上做备䆾?/p>

7?数据l护和灾难恢?/h3>

作ؓ一名DBA(我目前还不是Q呵?Q最重要的工作内容之一是保证数据表能安全、稳定、高速用。因此,需要定期维护你的数据表。以?SQL 语句很有用Q?/p>

CHECK TABLE ?REPAIR TABLEQ检查或l护 MyISAM ?
OPTIMIZE TABLEQ优?MyISAM ?
ANALYZE TABLEQ分?MyISAM ?

当然了,上面q些命o起始都可以通过工具 来完成,在这里不作详q?/p>

表则可以通过执行以下语句来整理碎片,提高索引速度Q?/p>

ALTER TABLE tbl_name ENGINE = Innodb;

q其实是一? 操作Q表面上看什么也不做Q实际上重新整理片了?/p>

通常使用? 表可以用上面提到的恢复方法来完成。如果是索引坏了Q可以用 工具来重建烦引。而对? 表来_没q么直接了,因ؓ它把所有的表都保存在一个表I间了。不q? 有一个检查机制叫 Q只要保存了日志文gQ就能根据日志文件来修复错误。可以在 文g中,增加以下参数Q让 在启动时自动查日志文Ӟ

innodb_force_recovery	= 4

关于该参数的信息h看手册?/p>

8?ȝ

做好数据备䆾Q定只好合适的备䆾{略Q这是一个DBA所做事情的一部分,万事开头难Q就从现在开始吧Q?/p>



]]>ORACLE触发?/title><link>http://www.aygfsteel.com/OpenCloseD/archive/2006/10/16/75331.html</link><dc:creator>开?/dc:creator><author>开?/author><pubDate>Sun, 15 Oct 2006 17:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/OpenCloseD/archive/2006/10/16/75331.html</guid><wfw:comment>http://www.aygfsteel.com/OpenCloseD/comments/75331.html</wfw:comment><comments>http://www.aygfsteel.com/OpenCloseD/archive/2006/10/16/75331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/OpenCloseD/comments/commentRss/75331.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/OpenCloseD/services/trackbacks/75331.html</trackback:ping><description><![CDATA[ <p> <font color="#deb887">触发器是一U特D的存储q程Q它在插入,删除或修改特定表中的数据时触发执行,它比数据库本w标准的功能有更_和更复杂的数据控制能力。数据库触发器有以下的作用:</font> </p> <p> <font color="#deb887">* 安全性。可以基于数据库的g用户h操作数据库的某种权利?/font> </p> <p> <font color="#deb887"># 可以Z旉限制用户的操作,例如不允怸班后和节假日修改数据库数据?/font> </p> <p> <font color="#deb887"># 可以Z数据库中的数据限制用L操作Q例如不允许股票的h格的升幅一ơ超q?0%?/font> </p> <p> <font color="#deb887">* 审计。可以跟t用户对数据库的操作?/font> </p> <p> <font color="#deb887"># 审计用户操作数据库的语句?/font> </p> <p> <font color="#deb887"># 把用户对数据库的更新写入审计表?/font> </p> <p> <font color="#deb887">* 实现复杂的数据完整性规则?/font> </p> <p> <font color="#deb887"># 实现非标准的数据完整性检查和U束。触发器可生比规则更ؓ复杂的限制。与规则不同Q触发器可以引用列或数据库对象。例如,触发器可回退M企图吃进过自己保证金的期货?/font> </p> <p> <font color="#deb887"># 提供可变的缺省倹{?/font> </p> <p> <font color="#deb887">* 实现复杂的非标准的数据库相关完整性规则。触发器可以Ҏ据库中相关的表进行连环更新。例如,在auths表author_code列上的删除触发器可导致相应删除在其它表中的与之匹配的行?/font> </p> <p> <font color="#deb887"># 在修Ҏ删除时联修Ҏ删除其它表中的与之匹配的行?/font> </p> <p> <font color="#deb887"># 在修Ҏ删除时把其它表中的与之匹配的行设成NULL倹{?/font> </p> <p> <font color="#deb887"># 在修Ҏ删除时把其它表中的与之匹配的行联设成缺省倹{?/font> </p> <p> <font color="#deb887"># 触发器能够拒l或回退那些破坏相关完整性的变化Q取消试图进行数据更新的事务。当插入一个与其主健不匚w的外部键Ӟq种触发器会起作用。例如,可以在books.author_code列上生成一个插入触发器Q如果新gauths.author_code列中的某g匚wӞ插入被回退?/font> </p> <p> <font color="#deb887">* 同步实时地复制表中的数据?/font> </p> <p> <font color="#deb887">* 自动计算数据|如果数据的DC一定的要求Q则q行特定的处理。例如,如果公司的帐号上的资金低?万元则立即给财务人员发送警告数据?/font> </p> <p> <font color="#deb887">ORACLE与SYBASE数据库的触发器有一定的区别Q下面将分别讲述q两U数据库触发器的作用和写法?/font> </p> <p> <font color="#deb887">?ORACLE 触发?/font> </p> <p> <font color="#deb887">ORACLE产生数据库触发器的语法ؓQ?/font> </p> <p> <font color="#deb887">create [or replace] trigger 触发器名 触发旉 触发事g</font> </p> <p> <font color="#deb887">on 表名</font> </p> <p> <font color="#deb887">[for each row]</font> </p> <p> <font color="#deb887">pl/sql 语句</font> </p> <p> <font color="#deb887">其中Q?/font> </p> <p> <font color="#deb887">触发器名Q触发器对象的名U。由于触发器是数据库自动执行的,因此该名U只是一个名Uͼ没有实质的用途?/font> </p> <p> <font color="#deb887">触发旉Q指明触发器何时执行Q该值可取:</font> </p> <p> <font color="#deb887">before---表示在数据库动作之前触发器执行;</font> </p> <p> <font color="#deb887">after---表示在数据库动作之后出发器执行?/font> </p> <p> <font color="#deb887">触发事gQ指明哪些数据库动作会触发此触发器:</font> </p> <p> <font color="#deb887">insertQ数据库插入会触发此触发器;</font> </p> <p> <font color="#deb887">updateQ数据库修改会触发此触发器;</font> </p> <p> <font color="#deb887">deleteQ数据库删除会触发此触发器?/font> </p> <p> <font color="#deb887">?名:数据库触发器所在的表?/font> </p> <p> <font color="#deb887">for each rowQ对表的每一行触发器执行一ơ。如果没有这一选项Q则只对整个表执行一ơ?/font> </p> <p> <font color="#deb887">举例Q下面的触发器在更新表auths之前触发Q目的是不允许在周末修改表:</font> </p> <p> <font color="#deb887">create trigger auth_secure</font> </p> <p> <font color="#deb887">before insert or update or delete //Ҏ表更新前触发</font> </p> <p> <font color="#deb887">on auths</font> </p> <p> <font color="#deb887">begin</font> </p> <p> <font color="#deb887">if(to_char(sysdate,'DY')='SUN'</font> </p> <p> <font color="#deb887">RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');</font> </p> <p> <font color="#deb887">end if;</font> </p> <p> <font color="#deb887">end</font> </p> <p> <font color="#deb887">?SYBASE数据库触发器</font> </p> <p> <font color="#deb887">SYBASE数据库触发器的作用与ORACLE非常cMQ仅有较的差异?/font> </p> <p> <font color="#deb887">SYBASE产生触发器的语法为:</font> </p> <p> <font color="#deb887">CREATE TRIGGER 触发器名</font> </p> <p> <font color="#deb887">ON 表名</font> </p> <p> <font color="#deb887">FOR INSERTQUPDATEQDELETE</font> </p> <p> <font color="#deb887">AS</font> </p> <p> <font color="#deb887">SQL_statement |</font> </p> <p> <font color="#deb887">FOR INSERTQUPDATE</font> </p> <p> <font color="#deb887">AS</font> </p> <p> <font color="#deb887">IF UPDATE(column_name) [AND|OR UPDATE(column_name)]...</font> </p> <p> <font color="#deb887">SQL_statements</font> </p> <p> <font color="#deb887">上面FOR子句用来指定在触发器上的哪些数据更新命o可激z该触发器。IF UPDATE子句查对指定列的操作cdQ在IF UPDATE子句中可指定多个列?/font> </p> <p> <font color="#deb887">与ORACLE不同Q对于每条SQL语句Q触发器只执行一ơ。触发器在数据更新语句完成以后立x行。触发器和启动它的语句被当作一个事务处理,事务可以在触发器中回退?/font> </p> <p> <font color="#deb887">下面举例说明SYBASE触发器的写法?/font> </p> <p> <font color="#deb887">create trigger forinsert_books</font> </p> <p> <font color="#deb887">on books</font> </p> <p> <font color="#deb887">for insert</font> </p> <p> <font color="#deb887">as</font> </p> <p> <font color="#deb887">if(select count(*) from auths,inserted</font> </p> <p> <font color="#deb887">where auths.author_code=insert.author_code)!=@@rowcount</font> </p> <p> <font color="#deb887">begin</font> </p> <p> <font color="#deb887">rollback transaction</font> </p> <p> <font color="#deb887">print "books 表中 author_code 列的值在auths 表中不存在?</font> </p> <p> <font color="#deb887">end</font> </p> <img src ="http://www.aygfsteel.com/OpenCloseD/aggbug/75331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/OpenCloseD/" target="_blank">开?/a> 2006-10-16 01:03 <a href="http://www.aygfsteel.com/OpenCloseD/archive/2006/10/16/75331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EASY MYSQL!http://www.aygfsteel.com/OpenCloseD/archive/2006/09/13/69281.html开?/dc:creator>开?/author>Wed, 13 Sep 2006 00:39:00 GMThttp://www.aygfsteel.com/OpenCloseD/archive/2006/09/13/69281.htmlhttp://www.aygfsteel.com/OpenCloseD/comments/69281.htmlhttp://www.aygfsteel.com/OpenCloseD/archive/2006/09/13/69281.html#Feedback0http://www.aygfsteel.com/OpenCloseD/comments/commentRss/69281.htmlhttp://www.aygfsteel.com/OpenCloseD/services/trackbacks/69281.html

  Mysql学习Ҏ【{?br />
׃工作中需要用mysqlQ笔者通过|上学习Q动手实践,l于从一?数据库菜?变成了能熟练操作mysql?准大?了,Q?。现学习心得整理如下?br />
  MySQL是完全网l化的跨q_关系型数据库pȝQ一个真正的多用戗多U程SQL数据库服务器Q同时是h客户?服务器体pȝ构的分布式数据库理pȝ。它h功能强、用简ѝ管理方ѝ运行速度快、安全可靠性强{优点,用户可利用许多语a~写讉KMySQL 数据库的E序Q对于中、小型应用系l是非常理想的。除了支持标准的ANSI SQL语句Q更重要的是Q它q支持多U^収ͼ而在Unixpȝ上该软g支持多线E运行方式,从而能获得相当好的性能。对于不使用Unix的用P它可以在Windows NTpȝ上以pȝ服务方式q行Q或者在Windows 95/98pȝ上以普通进E方式运行。而在Unix/Linuxpȝ上,MySQL支持多线E运行方式,从而能获得相当好的性能Q而且它是属于开放源代码软?br />
  MySQL是以一个客h/服务器结构的实现Q它׃个服务器守护E序mysqld和很多不同的客户E序和库l成QMySQL 的执行性能非常高,q行速度非常快,q常容易用,是一个非常棒的数据库。MySQL的官方发x"My Ess Que Ell"(不是 MY-SEQUEL )?br />
一Q获得MySQL

  首先必须下蝲MySQL。Mysql的官方网站是Qhttp://www.mysql.com Q在中国的镜像是Qhttp://www.freecode.net.cn/mirror/mysql/ 或者http://www2.linuxforum.net/mirror/mysql/Q可以下载MySQL的稳定版?.22.32(截止到笔者发Eؓ?。其版本名称是mysql-shareware-3.22.32-winQ不但免费而且没有所谓的"30天用期??br />
二.MySQL的安?/b>

(一)在Win98/Winnt下的安装

  C个目录,q行SetupE序Q会提示整个安装的过E。它默认安装到c:\mysql下,如果要安装到其它目录下还有改动一些东西,作ؓ初学者,可以先不,以默认的目录安装。好了,安装后,q入c:\mysql\bin目录下,q行mysqld-shareware.exe文g在Win98下直接运行,正常情况下,没有什么提CZ息?br />
  1。将下蝲后的文g解压解压C个时目录?br />  2。点击setup.exe安装到c:\mysql(默认)?br />  3。将mysql_example.cnf拯到c:\my.cnfQ把文g中的#basedir=d:/mysql/改ؓbasedir=c:\mysql?br />  4。进入msdosQ到目录c:\mysql\bin?br />  5。输入mysqld-shareware -installQ此为启动Mysql数据库服务?br />  6。mysqladmin Qu root -p password 新密码,此ؓ修改root用户的密?原来默认的密码ؓI?
  7。输入mysql -u root -p?br />  8Q接着Q根据提C入新密码 Q正常情况下会出现几行提CZ息ƈ出现提示W号Q?br /> 
   Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 6268 to server version: 3.22.32
    
Type 'help' for help.
    mysql>

到此Q你已经成功安装了MySQL?/font>

(?在Windows2000 下的安装

  1。安装时选默认目录: c:\mysql
  2。把 c:\mysql\my-example.cnf copy ?c:\my.cnfQƈ?c:\mysql\lib\cygwinb19.dll copy ?winnt\system32?br />  3。启?mysql的方法是Q?br />    c:\mysql\bin\mysqld-shareware --install
    net start mysql
  q么单,可以启动了

  4。更?用户(root) 的密码:
    C:\mysql\bin\mysql mysql
    mysql> UPDATE user SET password=PASSWORD('your password') WHERE user='root';
    mysql> QUIT
    C:\mysql\bin\mysqladmin reload
    使用命oC:\mysql\bin\mysqlshowȝ看检一下。在q里应该昄Q?br />    +-----------+
    | Databases |
    +-----------+
    | mysql |
    | test |
    +-----------+
    看到q些信息q一步就证明没问题了
    再来:
    C:\mysql\bin\mysqlshow --user=root --password=your password mysql
    在这里应该显C:
    Database: mysql
    +--------------+
    | Tables |
    +--------------+
    | columns_priv |
    | db |
    | host |
    | tables_priv |
    | user |
    +--------------+
    一切搞定!

  5。C:\mysql\bin\mysqladmin version status proc
  应该可以看到q些版本信息的:
   mysqladmin Ver 8.0 Distrib 3.22.32, for Win95/Win98 on i586
   TCX Datakonsult AB, by Monty

   Server version 3.22.32-shareware-debug
   Protocol version 10
   Connection localhost via TCP/IP
   TCP port 3306
   Uptime: 1 hour 29 min 30 sec

   Threads: 1 Questions: 72 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 0 Memory in use: 16423K Max memory      used: 16490K
   Uptime: 5370 Threads: 1 Questions: 72 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 0 Memory in use: 16423K     Max memory used: 16490K
    +----+------+-----------+----+---------+------+-------+------------------+
    | Id | User | Host | db | Command | Time | State | Info |
    +----+------+-----------+----+---------+------+-------+------------------+
    | 35 | ODBC | localhost | | Query | 0 | | show processlist |
    +----+------+-----------+----+---------+------+-------+------------------+
  接着Q用show databases命o可以安装的数据库列出来Q?br />    mysql> show databases;
  你就可以看到Q?br />    +----------+
    | Database |
    +----------+
    | mysql |
    | test |
    +----------+
    2 rows in set (0.00 sec)
  如果一切正常的话,那说明MySQL可以完全工作?如果要退出程序,输入Qexit
    mysql> exit;
    Bye

三.Mysql常识

(一) 字段cd

  1QINT[(M)]
  正常大小整数cd
  2QDOUBLE[(M,D)] [ZEROFILL]
  正常大小(双精?点数字cd
  3QDATE
  日期cd。支持的范围?1000-01-01'?9999-12-31'。MySQL?YYYY-MM-DD'格式来显CDATE|但是允许你用字W串或数字把Dl  DATE?br />  4QCHAR(M)
  定长字符串类型,当存储时QL是用I格填满双到指定的长度
  5QBLOB TEXT
  BLOB或TEXTcdQ最大长度ؓ65535(2^16-1)个字W?br />  6QVARCHAR
  变长字符串类型,最常用的类型?

(?基本操作

  1: 昄数据?
   mysql>SHOW DATABASES;
  2Q当前选择的数据库Q?
   mysql> SELECT DATABASE();
   +------------+
   | DATABASE() |
   +------------+
   | test |
   +------------+
  3.当前数据库包含的表信息:
   mysql> SHOW TABLES;
   +---------------------+
   | Tables in test |
   +---------------------+
   | mytable1 |
   | mytable2 |
   +---------------------+
  4.获取表结?
   mysql> desc mytable1;
   +---------+-------------+------+-----+---------+-------+
   | Field | Type | Null | Key | Default | Extra |
   +---------+-------------+------+-----+---------+-------+
   | s1 | varchar(20) | YES | | NULL | |
   +---------+-------------+------+-----+---------+-------+
  5Q创
  表是数据库的最基本元素之一Q表与表之间可以怺独立Q也可以怺兌。创的基本语法如下:
   create table table_name
   (column_name datatype {identity |null|not null},
   ?
  其中参数table_name和column_name必须满用户数据库中的识别器(identifier)的要求,参数datatype是一个标准的SQLcd或由用户数  据库提供的类型。用戯使用non-null从句为各字段输入数据?
  create tableq有一些其他选项Q如创徏临时表和使用select子句从其他的表中d某些字段l成新表{。还有,在创是可用PRIMARY   KEY、KEY、INDEX{标识符讑֮某些字段Z键或索引{。书写上要注意: 在一对圆括号里的列出完整的字D|单。字D名间用逗号隔开  ?字段名间的逗号后要加一个空根{最后一个字D名后不用逗号。所有的SQL陈述都以分号";"l束?
  例:
   mysql>CREATE TABLE guest (name varchar(10),sex varchar(2),age int(3),career varchar(10));
  6Q创建烦?
  索引用于Ҏ据库的查询。一般数据库建有多种索引ҎQ每U方案都_于某一特定的查询类。烦引可以加速对数据库的查询q程。创建  索引的基本语法如下:
   create index index_name
   on table_name (col_name[(length)],... )
  例:
  
 mysql> CREATE INDEX number ON guest (number(10));
  7Q执行查?
  查询是用最多的SQL命o。查询数据库需要凭借结构、烦引和字段cd{因素。大多数数据库含有一个优化器(optimizer)Q把用户的查  询语句{换成可选的形式Q以提高查询效率?
  值得注意的是MySQL不支持SQL92标准的嵌套的where子句Q即它只支持一个where子句。其基本语法如下Q?
   SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
   [DISTINCT | DISTINCTROW | ALL]
   select_expression,...
   [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
   [FROM table_references
   [WHERE where_definition]
   [GROUP BY col_name,...]
   [HAVING where_definition]
   [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
   [LIMIT [offset,] rows]
   [PROCEDURE procedure_name] ]
  其中where从句是定义选择标准的地方,where_definition可以有不同的格式Q但都遵循下面的形式Q?
  字段名操作表辑ּ
  字段名操作字D名
  在第一UŞ式下Q标准把字段的g表达式进行比较;在第二种形式下,把两个字D늚D行比较。根据所比较的数据类型,       search_condition中的操作可能选以下几U:
   = 查是否相{?
   Q? 查是否不{?

   > (?gt;=) 查左边值是否大?或大于等?双?
   < (?lt;=) 查左边值是否小?或小于等?双?
   [not] between 查左边值是否在某个范围?
   [not] in 查左Ҏ否某个特定集的成?
   [not] like 查左Ҏ否ؓ双的子?
   is [not] null 查左Ҏ否ؓI?
  在这里,可以用通配W_代表M一个字W,%代表M字符丌Ӏ用关键字?or>?not>可以生成复杂的词Q它们运行检查时使用  布尔表达式的多重标准集?
  例:
   
mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name;
   mysql> select college, region, seed from tournament
   ORDER BY region, seed;
   mysql> select col_name from tbl_name WHERE col_name > 0;

  8Q改变表l构
  在数据库的用过E中Q有旉要改变它的表l构Q包括改变字D名Q甚x变不同数据库字段间的关系。可以实Cq改变的命o是   alterQ其基本语法如下Q?
  alter table table_name alter_spec [, alter_spec ...]
  例:
   mysql> alter table dbname add column userid int(11) not null primary key auto_increment;
  q样Q就在表dbname中添加了一个字DuseridQ类型ؓint(11)?br />  9Q修改表中数?
  在用数据库q程中,往往要修改其表中的数据,比如往表中d新数据,删除表中原有数据Q或对表中原有数据进行更攏V它们的基本  语法如下Q?
  数据dQ?
   insert [into] table_name [(column(s))]
   values (expression(s))
  例:
   
mysql>insert into mydatabase values('php','mysql','asp','sqlserver','jsp','oracle');
  10. 表的数据更新

  (1) 一ơ修改一个字D,再次注意语法。文本需要加引号但数字不要?
   mysql>update table01 set field03='new info' where field01=1;
   Query OK, 1 row affected (0.00 sec)
  (2)一ơ改变多个字D,C在每一个更新的字段间用逗号隔开?
   mysql>update table01 set field04=19991022, field05=062218 where field01=1;
   Query OK, 1 row affected (0.00 sec)
  (3) 一ơ更新多个数?
   mysql>update table01 set field05=152901 where field04>19990101;
   Query OK, 3 rows affected (0.00 sec)
  11. 删除数据
   mysql>delete from table01 where field01=3;
   Query OK, 1 row affected (0.00 sec)
  12Q导入数据库?br />   (1)创徏.sql文g
   (2)先生一个库如auction.c:\mysql\bin>mysqladmin -u root -p creat auctionQ会提示输入密码Q然后成功创建?br />   (3)导入auction.sql文g
    c:\mysql\bin>mysql -u root -p auction < auction.sql?br />   通过以上操作Q就可以创徏了一个数据库auction以及其中的一个表auction?br />  13Qmysql数据库的授权
   mysql>grant select,insert,delete,create,drop
   on *.* (或test.*/user.*/..)
   to 用户名@localhost
   identified by '密码'Q?br />  如:新徏一个用户帐号以便可以访问数据库Q需要进行如下操作:
   mysql> grant usage
   -> ON test.*
   -> TO testuser@localhost;
   Query OK, 0 rows affected (0.15 sec)
  此后创Z一个新用户叫:testuserQ这个用户只能从localhostq接到数据库q可以连接到test 数据库。下一步,我们必须指定     testuserq个用户可以执行哪些操作Q?br />   mysql> GRANT select, insert, delete,update
   -> ON test.*
   -> TO testuser@localhost;
   Query OK, 0 rows affected (0.00 sec)
  此操作testuser能够在每一个test数据库中的表执行SELECTQINSERT和DELETE以及UPDATE查询操作。现在我们结束操作ƈ退出MySQL客户  E序Q?br />   mysql> exit
   Bye
  14Q授?MySQL用户密码
  MySQL数据库的默认用户名ؓ"root"(MS SQL Server ?sa 怼)Q密码默认ؓI。在DOS提示W?注意Q不是mysql提示W?下输?br />  c:\mysql\bin>"mysqladmin -u root -p password newpassword
  回R后会提示你输入原来的密码Q由于原来密码ؓI,直接回RQroot用户的密码便改ؓ"newpassword"了?/span>

四.安装phpMyAdmin

  MySQL囑Ş界面理器phpMyAdmin是一套以php3 写成Q针对MySQL数据库系l的Web理界面。它可以很方便地以图形化界面Q来对MySQL数据库里的字Dc数据进行增加、删除等的动作,更可以做数据库本w的增删理QphpMyAdmin可以理整个MySQL服务?需要超U用?Q也可以理单个数据库。另外,您也可以通过使用q个囑Ş化界面来学习SQL正确的语法,直至熟练掌握。那要等C看过MySQL手册中相关的部分。你可以到http://www.phpwizard.net/phpMyAdmin/ M载最新的版本?br />
首先Q将phpMyAdmin软g包解C个目录下?br />1Q修Ҏ档config.inc.php3?br />原来的讑֮Q?
$cfgServers[1]['host'] = ''; // MySQL hostname
$cfgServers[1]['port'] = ''; // MySQL port - leave blank for default port
$cfgServers[1]['adv_auth'] = false; // Use advanced authentication?
$cfgServers[1]['stduser'] = ''; // MySQL standard user (only needed with advanced auth)
$cfgServers[1]['stdpass'] = ''; // MySQL standard password (only needed with advanced auth)
$cfgServers[1]['user'] = ''; // MySQL user (only needed withbasic auth)
$cfgServers[1]['password'] = ''; // MySQL password (only needed with basic auth)
$cfgServers[1]['only_db'] = ''; // If set to a db-name, only this db is accessible
$cfgServers[1]['verbose'] = ''; // Verbose name for this host -leave blank to show the hostname
:
:
require("english.inc.php3");
修改成:
$cfgServers[1]['host'] = 'MySQL Server的hostname'; // 填入您的MySQL Server的主机名U?br />$cfgServers[1]['port'] = ''; // 填入q结 MySQL的portQ不填则以预讄portq行q结
$cfgServers[1]['adv_auth'] = true; // Ҏtrue则进入phpMyAdmin必须先n份认?
$cfgServers[1]['stduser'] = 'root'; // MySQL使用者的帐号
$cfgServers[1]['stdpass'] = '密码'; // MySQL使用者的密码
$cfgServers[1]['user'] = 'root'; // MySQL理帐号
$cfgServers[1]['password'] = '密码'; // MySQL理密码
$cfgServers[1]['only_db'] = ''; // 指定理的资库名Uͼ不填则可以管理整个Server
$cfgServers[1]['verbose'] = ''; // 指定MySQL的名Uͼ不填则用系l本w的hostname
:
:
require("chinese_gb.inc.php3"); //语aҎ中文
说明如下Q?
 (1)因本理接口Q可以以一个接口,理多个MySQL ServerQ所以可以在config.inc.php3中找?
  $cfgServers[1]...
  $cfgServers[1]...
  $cfgServers[1]...
   Q?
  $cfgServers[2]...
  $cfgServers[2]...
  $cfgServers[2]...
  其中[1]代表W一个MySQL ServerQ[2]代表W二个MySQL ServerQ您要管理的MySQL Server过三台以上Q您可以依照同样的qͼ增加[4].....下去Q?br />  (2)若您的MySQL Server与http Server是同一収ͼ?cfgServers[1]['host'] =可直接填入localhost?br />最后,打开览器,输入 http://你的|址/phpMyAdmin 之后您会看到一个密码验证的窗口,输入您的MySQL理帐号及密码,卛_成功地看到phpMyAdmin的管理画面。通过phpmyadminQ你可以图形化的、方便的理你的所有数据库了?br />
五.结
  通过以上的学习和操作Q终于可以自由操作mysql数据库了Q也可以轻R熟\的用php或者asp调用mysql了。最后,W者要特别感谢开发了mysqlq且免费贡献的天才以及在|上提供mysql使用说明的大虾们?/font>



]]>
վ֩ģ壺 | ƽ| | | ݸ| ϳ| ʲ| Ͷ| ͬ| | | ױ| ͼ| ʡ| Զ| ƽ| | ͼľ| ̨| | ޳| | | | | ³ľ| ̩| | | | ʯ¥| Ϻӿ| | Ϫ| | | ӽ| | | | |