每天进步一点达——MySQL——myisampack
一、 简单介绍
myisampack是一个压缩使用MyISAM引擎表的工具,通常会压缩40%~70%,当须要訪问数据。server会将所须要的信息读入到内存中。所以当訪问详细记录时,性能会更好,由于仅仅须要解压一条记录
MySQL使用mmap()对变哦进行压缩映射,假设mmap()不工作,MySQL会返回到普通的读写文件操作
压缩后的表将会成为仅仅读的,而且myisampack不支持分区表。
二、 命令格式
myisampack 选项 文件名称
三、 经常使用參
--backup-b --backup 使用tbl_name .OLD备份数据文件
--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。将要连接的全部表必须有相等的结构(同样的列名和类型,同样的索引等等)。
--packlength=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选项调用了mysqldserver。假设在压缩过程中表可能被更新,调用myisampack不是一个好主意。
执行myisampack后。必须执行myisamchk以又一次创建索引。
此时,你也能够排序索引块并创建MySQL优化器须要的统计信息以更有效地工作: shell> myisamchk -rq --sort-index--analyze tbl_name.MYI 将压缩的表安装到MySQL数据库文件夹中后。应执行mysqladmin flush-tables以强制mysqld使用新的表。 要想解压缩一个压缩的表,使用myisamchk或isamchk的--unpack选项。
--help 帮助
四、 经常使用样例
1. myisampack压缩表
[root@localhosttest2]# ll -tr
总用量 180
-rw-rw---- 1 mysql mysql 65 7月 16 16:40 db.opt
-rw-rw---- 1 mysql mysql 8556 7月 16 16:46 t1.frm
-rw-rw---- 1 mysql mysql 1024 7月 16 17:29 t1.MYI
-rw-rw---- 1 mysql mysql 161742 7月 16 17:29 t1.MYD
[root@localhost test2]# myisampack t1
Compressing t1.MYD: (23106 records)
- Calculating statistics
- Compressing file
85.68%
[root@localhosttest2]# ll -tr
总用量 44
-rw-rw---- 1 mysql mysql 65 7月 16 16:40 db.opt
-rw-rw---- 1 mysql mysql 8556 7月 16 16:46 t1.frm
-rw-rw---- 1 mysql mysql 23167 7月 16 17:29 t1.MYD
-rw-rw---- 1 mysql mysql 1024 7月 16 17:30 t1.MYI
在Mysql中查询
mysql>show table status like 't1'\G;
*************************** 1. row***************************
Name: t1
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 22857
Avg_row_length: 7
Data_length: 159999
Max_data_length: 1970324836974591
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2015-07-16 16:46:17
Update_time: 2015-07-16 17:29:40
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>show table status like 't1'\G;
*************************** 1. row***************************
Name: t1
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 23177
Avg_row_length: 7
Data_length: 162239
Max_data_length: 1970324836974591
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2015-07-16 16:46:17
Update_time: 2015-07-16 17:30:48
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
t8 lines: 7 columns: 9
2. myisampack备份数据库文件
[root@localhost test2]# ll
-rw-rw---- 1 mysql mysql 65 7月 16 16:40 db.opt
-rw-rw---- 1 mysql mysql 8572 7月 17 09:28 t1.frm
-rw-rw---- 1 mysql mysql 73 7月 17 09:50 t1.MYD
-rw-rw---- 1 mysql mysql 1024 7月 17 10:04 t1.MYI
-rw-rw---- 1 mysql mysql 217月 17 09:50 t1.OLD
-rw-rw---- 1 mysql mysql 8598 7月 17 10:10 t2.frm
-rw-rw---- 1 mysql mysql4344192 7月 17 10:11 t2.MYD
-rw-rw---- 1 mysql mysql 4955136 7月 17 10:11 t2.MYI
-rw-rw---- 1 mysql mysql 8572 7月 17 10:06 t3.frm
-rw-rw---- 1 mysql mysql 147456 7月 17 10:06 t3.ibd
-rw-rw---- 1 mysql mysql 8598 7月 17 10:11 t4.frm
-rw-rw---- 1 mysql mysql 4344192 7月 17 10:11 t4.MYD
-rw-rw---- 1 mysql mysql 1024 7月 17 10:11 t4.MYI
-rw-rw---- 1 mysql mysql 8598 7月 17 10:12 t5.frm
-rw-rw---- 1 mysql mysql 1996157 7月 17 10:12 t5.MYD
-rw-rw---- 1 mysql mysql 1024 7月 17 10:12 t5.MYI
-rw-rw---- 1 mysql mysql4344192 7月 17 10:12 t5.OLD
我们发现备份出来的数据文件与原来的文件大小一致。可是压缩后的数据文件会小一些
3. 向T5中插入数据
mysql> insert into t5(str_number)values(1);
ERROR 1036 (HY000): Table 't5' is read only
每天进步一点达——MySQL——myisampack的更多相关文章
- 在写一点关于MySQL的知识,感觉自己mmd
DBMS(Database Management System)数据库管理系统 包括有DDL(数据定义语言)和DML(数据操纵语言)以及DCL(数据库控制语言) 数据库设计方法: 1.需求分析阶段 ...
- mysql数据库史上最详细起步教程(1)
本文主要讲解mysql的操作,尽量保证步骤的详细与清晰,希望能帮到大家. 1.登录后进行数据库的创建:create database lf(数据库名); (一定要记住分号,mysql在语句的结束符就 ...
- mysql分区
<?php /* 分区 目录 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. ...
- 转-MySQL教程-写的很详细,赞一个
原帖地址:https://www.w3cschool.cn/mysql/,谢谢原帖大人 MySQL是什么? MySQL安装 MySQL示例数据库 MySQL导入示例数据库 MySQL基础教程 MySQ ...
- SQL Server和MySQL数据库
导读:接下来的网上商城的项目,需要用到MySQL数据库了.这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它.本篇博客,先介绍SQL Server的基本内容, ...
- Mysql 和 Postgresql(PGSQL) 对比
Mysql 和 Postgresql(PGSQL) 对比 转载自:http://www.oschina.net/question/96003_13994 PostgreSQL与MySQL比较 MySQ ...
- PostgreSQL与MySQL对比
都属于开放源码的一员,性能和功能都在高速地提高和增强.MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错 ...
- PostgreSQL 与 MySQL 相比,优势何在?
一. PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃.断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统 ...
- Mysql bench执行sql语句批量操作数据所遇到的问题
一.错误 rror Code: 1175. You are using safe update mode and you tried to update a table without a WHERE ...
随机推荐
- android activity在横竖屏切换的时候不重新调用onCreate方法
在安卓系统中,横竖屏切换会默认重新调用onCreate等生命周期方法,如果此时有一些临时数据没有保存下来,很有可能会导致该数据丢失. 因此我们可以进行以下设置,来避免恒切换时重新调用onCreate方 ...
- Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS
http://blog.csdn.net/hice1226/article/details/6717354 Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS 摘要:Mpeg-2同步及时间 ...
- javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...
- vnc执行,报xauth could not run
/usr/bin/gnome-terminal [INFO-10%]生成随机密码 [INFO-20%]生成密码文件 [INFO-30%]完成初始化,准备打开连接 Error: could not ru ...
- 学习笔记-[Maven实战]-第二章:Maven安装和配置
在windows上安装Maven 1.检查JDK安装:在CMD下运行以下命令来检查JAVA安装情况: 命令: C:\Documents and Settings\Administrator>ec ...
- MySQL导入数据非常慢的解决办法
MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时.在导出时合理使用几个参数,可以大大加快导入的速度. -e 使用包括几个VALUES列表的多行INSER ...
- 深入.net平台和c#编程 学习笔记
深入.net平台和c#编程 一:理解.nteFramwork与c# 1.1,:Microsoft.net框架概述 1.2:.net框架结构 1.3.:c#语言概述 1.4:体验框架类库的强大功能 二: ...
- web网站加速之CDN(Content Delivery Network)技术原理
在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的 ...
- 一步步写STM32 OS【三】PendSV与堆栈操作
一.什么是PendSV PendSV是可悬起异常,如果我们把它配置最低优先级,那么如果同时有多个异常被触发,它会在其他异常执行完毕后再执行,而且任何异常都可以中断它.更详细的内容在<Cortex ...
- nginx 健康检查和负载均衡机制分析
nginx 是优秀的反向代理服务器,这里主要讲它的健康检查和负载均衡机制,以及这种机制带来的问题.所谓健康检查,就是当后端出现问题(具体什么叫出现问题,依赖 于具体实现,各个实现定义不一样),不再往这 ...