分类: Mysql/postgreSQL
2008-05-11 18:46:14
有许多不同的MySQL客户端程序可以连接服务器以访问数据库或执行管理任务。也可以使用其它工具。这些程序不与服务器进行通讯但可以执行MySQL相关的操作。
本章简述了这些程序然后详细描述了每个程序。描述了如何调用这些程序和它们理解的选项。调用程序和指定程序选项的总信息参见第4章:MySQL程序概述。
下面简单列出了MySQL客户端程序和实用工具:
· myisampack
压缩MyISAM表以产生更小的只读表的一个工具。参见8.2节,“myisampack:生成压缩、只读MyISAM表”。
· mysql
交互式输入SQL语句或从文件以批处理模式执行它们的命令行工具。参见8.3节,“mysql:MySQL命令行工具”。
· mysqlaccess
检查访问主机名、用户名和数据库组合的权限的脚本。
· mysqladmin
执行管理操作的客户程序,例如创建或删除数据库,重载授权表,将表刷新到硬盘上,以及重新打开日志文件。mysqladmin还可以用来检索版本、进程,以及服务器的状态信息。参见8.5节,“mysqladmin:用于管理MySQL服务器的客户端”。
· mysqlbinlog
从二进制日志读取语句的工具。在二进制日志文件中包含的执行过的语句的日志可用来帮助从崩溃中恢复。参见8.6节,“mysqlbinlog:用于处理二进制日志文件的实用工具”。
· mysqlcheck
检查、修复、分析以及优化表的表维护客户程序。参见8.7节,“mysqlcheck:表维护和维修程序”。
· mysqldump
将MySQL数据库转储到一个文件(例如SQL语句或tab分隔符文本文件)的客户程序。增强版免费软件首先由Igor Romanenko提供。参见8.8节,“mysqldump:数据库备份程序”。
· mysqlhotcopy
当服务器在运行时,快速备份MyISAM或ISAM表的工具。参见8.9节,“mysqlhotcopy:数据库备份程序”。
· mysql import
使用LOAD DATA INFILE将文本文件导入相关表的客户程序。参见8.10节,“mysqlimport:数据导入程序”。
· mysqlshow
显示数据库、表、列以及索引相关信息的客户程序。参见8.11节,“mysqlshow:显示数据库、表和列信息”。
· perror
显示系统或MySQL错误代码含义的工具。参见8.13节,“perror:解释错误代码”。
· replace
更改文件中或标准输入中的字符串的实用工具。参见8.14节,“replace:字符串替换实用工具”。
MySQL AB还提供了大量GUI工具用于管理和MySQL服务器的其它工作。相关基本信息参见第4章:MySQL程序概述。
每个MySQL程序有许多不同的选项。但每个MySQL程序均提供一个---help选项,可以用来全面描述程序不同的选项。例如,可以试试mysql---help。
使用mysqlclient库同服务器进行通讯的MySQL客户使用下面的环境变量:
|
MYSQL_UNIX_PORT |
默认Unix套接字文件;用于连接localhost |
|
MYSQL_TCP_PORT |
默认端口号;用于TCP/IP连接 |
|
MYSQL_PWD |
默认密码 |
|
MYSQL_DEBUG |
调试过程中的调试跟踪选项 |
|
TMPDIR |
创建临时表和文件的目录 |
使用MYSQL_PWD不安全。参见5.8.6节,“使你的密码安全”。
可以在选项文件中或在命令行中指定选项来替换所有标准程序的默认选项值或指定的环境变量的值。参见4.3节,“指定程序选项”。
myisampack工具可以压缩MyISAM表.MYIsampack分别压缩表中的每一列。通常,myisampack可以将数据文件压缩到40%-70%。
当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。
MySQL使用mmap()对压缩的表进行内存映射。如果mmap()不工作,MySQL返回到普通读/写文件操作。
请注意:
· 如果用--skip-external-locking选项调用mysqld服务器,如果在压缩过程中表可能被更新,调用myisampack不是一个好注意。
· 表压缩后,它变为只读。这是故意的(例如当访问CD上的压缩的表时)。允许写入到压缩的表位于我们的TODO列表中,但优先级较低。
· myisampack可以压缩BLOB或TEXT列。旧版本ISAM表的pack_isam程序不可以。
调用myisampack的方法:
shell> myisampack [options] filename ...
文件名应为索引(.MYI)文件的文件名。如果不在数据库目录,应指定文件的路径名。允许忽略.MYI扩展名。
myisampack支持下面的选项:
· --help,-?
显示帮助消息并退出。
· --backup,-b
使用tbl_name.OLD名备份表数据文件。
· ---debug[=debug_options],-# [debug_options]
写调试日志。debug_options字符串通常为'd:t:o,file_name'。
· --force,-f
产生一个压缩的表,即使它比原始表大,或如果以前调用myisampack的中间文件存在。(myisampack压缩表时在数据库目录中创建一个名为tbl_name.TMD的中间文件。如果杀掉myisampack,.TMD文件会被删除)。通常情况,如果myisampack发现tbl_name.TMD存在则退出并提示错误。用--force,myisampack则一定压缩表。
· -join=big_tbl_name,-j big_tbl_name
将命令行中的所有表联接为一个表big_tbl_name。将要连接的所有表必须有相等的结构(相同的列名和类型,相同的索引等等)。
· --pack length=len,-p len
指定记录长度存储大小,以字节计。值应为1、2或者3。myisampack保存所有长度指针为1、2或者3字节的行。在大多数正常情况下,myisampack在开始压缩文件前可以确定准确的长度值,但在压缩过程中它可以提示它可能已经使用了一个短的长度。在这种情况下,myisampack输出一条提示,下次你压缩同一文件时,你可以使用更短的记录长度。
· --silent,-s
沉默模式。只有发生错误时才写输出。
· --test,-t
没有实际地压缩表,只是测试压缩。
· --tmpdir=path,-T path
使用myisamchk创建临时文件的目录。
· --verbose,-v
冗长模式。写压缩操作过程相关信息和其结果。
· --version,-V
显示版本信息并退出。
· --wait,-w
如果表正使用则等待并重试。如果用--skip-external-locking选项调用了mysqld服务器,如果在压缩过程中表可能被更新,调用myisampack不是一个好注意。
下面的顺序命令说明了典型的表压缩会话:
shell> ls -l station.*
-rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD-rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI-rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell> myisamchk -dvv station
MyISAM file: stationIsam-version: 2Creation time: 1996-03-13 10:08:58Recover time: 1997-02-02 3:06:43Data records: 1192 Deleted blocks: 0Datafile parts: 1192 Deleted data: 0Datafile pointer (bytes): 2 Keyfile pointer (bytes): 2Max datafile length: 54657023 Max keyfile length: 33554431Recordlength: 834Record format: Fixed length table description:Key Start Len Index Type Root Blocksize Rec/key1 2 4 unique unsigned long 1024 1024 12 32 30 multip. text 10240 1024 1 Field Start Length Type1 1 12 2 43 6 44 10 15 11 206 31 17 32 308 62 359 97 3510 132 3511 167 412 171 1613 187 3514 222 415 226 1616 242 2017 262 2018 282 2019 302 3020 332 421 336 422 340 123 341 824 349 825 357 826 365 227 367 228 369 429 373 430 377 131 378 232 380 833 388 434 392 435 396 436 400 437 404 138 405 439 409 440 413 441 417 442 421 443 425 444 429 2045 449 3046 479 147 480 148 481 7949 560 7950 639 7951 718 7952 797 853 805 154 806 155 807 2056 827 457 831 4 shell> myisampack station.MYI
Compressing station.MYI: (1192 records)- Calculating statistics normal: 20 empty-space: 16 empty-zero: 12 empty-fill: 11pre-space: 0 end-space: 12 table-lookups: 5 zero: 7Original trees: 57 After join: 17- Compressing file87.14%Remember to run myisamchk -rq on compressed tables shell> ls -l station.*
-rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD-rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI-rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell> myisamchk -dvv station
MyISAM file: stationIsam-version: 2Creation time: 1996-03-13 10:08:58Recover time: 1997-04-17 19:04:26Data records: 1192 Deleted blocks: 0Datafile parts: 1192 Deleted data: 0Datafile pointer (bytes): 3 Keyfile pointer (bytes): 1Max datafile length: 16777215 Max keyfile length: 131071Recordlength: 834Record format: Compressed table description:Key Start Len Index Type Root Blocksize Rec/key1 2 4 unique unsigned long 10240 1024 12 32 30 multip. text 54272 1024 1 Field Start Length Type Huff tree Bits1 1 1 constant 1 02 2 4 zerofill(1) 2 93 6 4 no zeros, zerofill(1) 2 94 10 1 3 95 11 20 table-lookup 4 06 31 1 3 97 32 30 no endspace, not_always 5 98 62 35 no endspace, not_always, no empty 6 99 97 35 no empty 7 910 132 35 no endspace, not_always, no empty 6 911 167 4 zerofill(1) 2 912 171 16 no endspace, not_always, no empty 5 913 187 35 no endspace, not_always, no empty 6 914 222 4 zerofill(1) 2 915 226 16 no endspace, not_always, no empty 5 916 242 20 no endspace, not_always 8 917 262 20 no endspace, no empty 8 918 282 20 no endspace, no empty 5 919 302 30 no endspace, no empty 6 920 332 4 always zero 2 921 336 4 always zero 2 922 340 1 3 923 341 8 table-lookup 9 024 349 8 table-lookup 10 025 357 8 always zero 2 926 365 2 2 927 367 2 no zeros, zerofill(1) 2 928 369 4 no zeros, zerofill(1) 2 929 373 4 table-lookup 11 030 377 1 3 931 378 2 no zeros, zerofill(1) 2 932 380 8 no zeros 2 933 388 4 always zero 2 934 392 4 table-lookup 12 035 396 4 no zeros, zerofill(1) 13 936 400 4 no zeros, zerofill(1) 2 937 404 1 2 938 405 4 no zeros 2 939 409 4 always zero 2 940 413 4 no zeros 2 941 417 4 always zero 2 942 421 4 no zeros 2 943 425 4 always zero 2 944 429 20 no empty 3 945 449 30 no empty 3 946 479 1 14 447 480 1 14 448 481 79 no endspace, no empty 15 949 560 79 no empty 2 950 639 79 no empty 2 951 718 79 no endspace 16 952 797 8 no empty 2 953 805 1 17 154 806 1 3 955 807 20 no empty 3 956 827 4 no zeros, zerofill(2) 2 957 831 4 no zeros, zerofill(1) 2 9
myisampack显示下面的各种信息:
· normal
不需要进行额外压缩的列的数量。
· empty-space
只包含空格的列的数量;占一个比特。
· empty-zero
只包含二进制零的列的数量;占一个比特。
· empty-fill
不占该类全字节范围的整数列的数量;这些列被改为较小的类型。例如,如果所有值的范围为从-128到127,BIGINT列(8个字节)可以保存为TINYINT列(1个字节)。
· pre-space
用引导空格保存的十进制列的数量。在这种情况下,每个值包含一个引导空格的数量计数。
· end-space
有大量结尾空格的列的数量。在这种情况下,每个值包含一个结尾空格的数量计数。
· table-lookup
该列只有少量的不同的值,在进行哈夫曼压缩前被转换为一个ENUM。
· zero
所有值为零的列的数量。
· Original trees
哈夫曼树的最初数量。
· After join
联接树以节省一些头空间之后留下的哈夫曼树的数量。
表被压缩后,myisamchk -dvv为每列输出详细信息:
· Type
列的类型。该值可以包含下面的任何描述符:
o constant
所有行具有相同的值。
o no endspace
不保存结尾空格。
o no endspace,not_always
不保存结尾空格并且对于所有的值不压缩结尾空格。
o no endspace,no empty
不保存结尾空格。不保存空值。
o table-lookup
列被转换为一个ENUM。
o zerofill(n)
值中最有意义的n字节总为0,并且不保存。
o no zeros
不保存零。
o always zeros
用一个位保存零值。
· Huff tree
列相关的哈夫曼树的数量。
· Bits
哈夫曼树使用的位数。
运行myisampack后,必须运行myisamchk以重新创建索引。此时,你也可以排序索引块并创建MySQL优化器需要的统计信息以更有效地工作:
shell> myisamchk -rq --sort-index --analyze tbl_name.MYI
将压缩的表安装到MySQL数据库目录中后,应执行mysqladmin flush-tables以强制mysqld使用新的表。
要想解压缩一个压缩的表,使用myisamchk或isamchk的--unpack选项。