pt-find - Find MySQL tables and execute actions, like GNU find.

用法:
pt-find [OPTION...] [DATABASE...]

例子:

找出创建于一天之前,并且是myisam存储引擎的表
[root@goolen ~]# pt-find --ctime +1 --engine MyISAM -uroot -proot
`mysql`.`db`
`mysql`.`event`
`mysql`.`func`
`mysql`.`help_category`
`mysql`.`help_keyword`
`mysql`.`help_relation`
`mysql`.`help_topic`
`mysql`.`host`
`mysql`.`ndb_binlog_index`
`mysql`.`plugin`
`mysql`.`proc`
`mysql`.`procs_priv`
`mysql`.`proxies_priv`
`mysql`.`servers`
`mysql`.`tables_priv`
`mysql`.`time_zone`
`mysql`.`time_zone_leap_second`
`mysql`.`time_zone_name`
`mysql`.`time_zone_transition`
`mysql`.`time_zone_transition_type`
`mysql`.`user`

找出goolen库中的innodb引擎的表,并且把他们转换为myisam表:
mysql> select table_name,engine from information_schema.tables where table_schema='goolen';
+-----------------+--------+
| table_name      | engine |
+-----------------+--------+
| a               | InnoDB |
| b               | InnoDB |
| c               | InnoDB |
| g1              | InnoDB |
| topic_indicator | InnoDB |
+-----------------+--------+
[root@goolen ~]# pt-find --engine InnoDB --exec "ALTER TABLE %D.%N ENGINE=MyISAM" -uroot -proot goolen

mysql> select table_name,engine from information_schema.tables where table_schema='goolen';
+-----------------+--------+
| table_name      | engine |
+-----------------+--------+
| a               | MyISAM |
| b               | MyISAM |
| c               | MyISAM |
| g1              | MyISAM |
| topic_indicator | MyISAM |
+-----------------+--------+

找出goolen库中的空表,然后删除:
mysql> use goolen;
Database changed
mysql> show tables;
+------------------+
| Tables_in_goolen |
+------------------+
| a                |
| b                |
| c                |
| g1               |
| topic_indicator  |
+------------------+
5 rows in set (0.00 sec)
[root@goolen ~]# pt-find --empty goolen --exec-plus "DROP TABLE %s"

mysql> show tables;
+------------------+
| Tables_in_goolen |
+------------------+
| g1               |
+------------------+
1 row in set (0.00 sec)

找出goolen库中size大于200M的表
[root@goolen goolen]# ll -h bigsize_table.*
-rw-rw---- 1 mysql mysql 9.4K Dec  2 16:52 bigsize_table.frm
-rw-rw---- 1 mysql mysql 420M Dec  2 16:54 bigsize_table.ibd

[root@goolen ~]# pt-find --tablesize +200M -uroot -proot goolen
`goolen`.`bigsize_table`

Find all tables and print their total data and index size, and sort largest tables first (sort is a different program, by the way).
列出所有的表,包括表的总行数和索引的size,并按总数倒序排序(排序操作有系统命令sort完成,pt-find本身没排序功能)
[root@goolen ~]# pt-find --printf "%T\t%D.%N\n" -uroot -proot | sort -rn
425639936  `goolen`.`bigsize_table`
461592  `mysql`.`help_topic`
108816  `mysql`.`help_keyword`
32768   `test`.`goolen3`
32768   `test`.`goolen2`
27675   `mysql`.`help_relation`
25150   `mysql`.`help_category`
16384   `test`.`t1`
16384   `test`.`goolen`
6880    `mysql`.`db`
6506    `mysql`.`proxies_priv`
。。。
。。。

As above, but this time, insert the data back into the database for posterity:
列出所有的表,把输出信息保存到goolen库里的tblsize表里:
mysql> create table tblsize(db varchar(20),tbl varchar(35) ,size int);  
Query OK, 0 rows affected (0.12 sec)

[root@goolen ~]# pt-find --noquote --exec "INSERT INTO goolen.tblsize(db, tbl, size) VALUES('%D', '%N', %T)" -uroot -proot

mysql> select * from tblsize;
+--------------------+-------------------------------------+-----------+
| db                 | tbl                                 | size      |
+--------------------+-------------------------------------+-----------+
| goolen             | bigsize_table                       | 425639936 |
| goolen             | g1                                  |      2108 |
| goolen             | tblsize                             |     16384 |
| mysql              | columns_priv                        |      4096 |
| mysql              | db                                  |      6880 |
| mysql              | event                               |      2048 |
| mysql              | func                                |      1024 |
| mysql              | general_log                         |         0 |
+--------------------+-------------------------------------+-----------+

参数说明:
--ask-pass
Prompt for a password when connecting to MySQL.
连接的时候提示输出密码

例:
[root@goolen ~]#
[root@goolen ~]# pt-find --printf "%T\t%D.%N\n" -uroot --ask-pass goolen 
Enter password: 
425639936       `goolen`.`bigsize_table`
2108    `goolen`.`g1`
16384   `goolen`.`tblsize`

--case-insensitive
Specifies that all regular expression searches are case-insensitive.

例:
默认匹配区分大小写,innodb全部小写,没有输出匹配信息 
[root@goolen ~]# pt-find --engine innodb --printf "ALTER TABLE %D.%N ENGINE=MyISAM" -uroot -proot goolen      
指定忽略大小写:
[root@goolen ~]# pt-find --engine innodb --printf "ALTER TABLE %D.%N ENGINE=MyISAM" -uroot -proot goolen --case-insensitive
ALTER TABLE `goolen`.`bigsize_table` ENGINE=MyISAMALTER TABLE `goolen`.`tblsize` ENGINE=MyISAM

[root@goolen ~]# pt-find --engine InnoDB --printf "ALTER TABLE %D.%N ENGINE=MyISAM" -uroot -proot goolen        
ALTER TABLE `goolen`.`bigsize_table` ENGINE=MyISAMALTER TABLE `goolen`.`tblsize` ENGINE=MyISAM
[root@goolen ~]#

pt-find 使用实例的更多相关文章

  1. C#_简单实用的翻页

    简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...

  2. Java进阶知识22 Spring execution 切入点表达式

    1.概述   切入点(execution ):可以对指定的方法进行拦截,从而给指定的类生成代理对象.(拦截谁,就是在谁那里切入指定的程序/方法) 格式: execution(modifiers-pat ...

  3. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  4. PHP: 手把手编写自己的 MVC 框架实例教程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...

  5. Linux多线程实例练习 - pthread_exit() 与 pthread_join()

    Linux多线程实例练习 - pthread_exit 与 pthread_join pthread_exit():终止当前线程 void pthread_exit(void* retval); pt ...

  6. JMeter学习-020-JMeter 监听器之【聚合报告】错误率、吞吐量、传输速率实例计算

    上文 对聚合报告的结果字段进行了概要的讲述释义,同时对吞吐量.传输速率.分位数等进行了详细的阐述,此文针对上文中描述的吞吐量及传输速率的计算进行详细的实例计算演示. 多不闲述,直入主题! 实际操作步骤 ...

  7. (转)shell实例手册

    原文地址:http://hi.baidu.com/quanzhou722/item/f4a4f3c9eb37f02d46d5c0d9 实在是太好的资料了,不得不转 shell实例手册 0说明{ 手册制 ...

  8. Maven-002-eclipse 插件安装及实例

    因为平常编码的时候,习惯了使用 eclipse 进行编码,因而需要将 eclipse 安装 maven 的插件,安装步骤如下所示: 一.安装 选择菜单: help -> Install New  ...

  9. JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)概述及简单实例

    上文我们讲述了如何对 HTTP请求 的响应数据进行断言,以判断响应是否符合我们的预期,敬请参阅:JMeter学习-007-JMeter 断言实例之一 - 响应断言 那么我们如何获取 HTTP请求 响应 ...

  10. Cookie实例,理解cookie

    一.一句话了解cookie是什么 cookie是服务端发送给客户端的.用来记录一些信息(如用户名),定制主页,聚焦广告的.最终以文件形式存在于客户端电脑磁盘下的小型文档. 二.用实例来认清cookie ...

随机推荐

  1. python中lambda函数

    1.lambda函数使用如下: lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右侧的是返回值 >>> g=lambda x,y:x*y>>> g(4 ...

  2. Hash哈希类型

    hash类型是使用得非常非常多的一种redis数据类型,相当于C#中的Dictionary和Hashtable. hset命令(语法:hset key field value)将哈希表key中的fie ...

  3. 生成XML文件

    import java.io.FileOutputStream;import java.io.IOException; import org.jdom.Document;import org.jdom ...

  4. CentOS6.4安装Hadoop2.0.5 alpha - 3-Node Cluster

    1.在第2个个节点上重复http://www.cnblogs.com/littlesuccess/p/3361497.html文章中的第1-5步 2.修改第1个节点上的hdfs-site.xml中的配 ...

  5. C# 顺序高斯(Gauss)消去法计算一元多次方程组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. Photo Kit 框架

    http://geek.csdn.net/news/detail/56031 http://www.jianshu.com/p/9988303b2429 http://blog.sina.com.cn ...

  7. Eclipse for php + Xdebug搭建PHP的调试环境

    Xdebug安装教程 下载Xdebug 首先我们需要下载Xdebug,务必根据安装的PHP版本,选择合适的Xdebug版本,由于我是在Windows环境下安装PHP的,所以选择下载Windows版本的 ...

  8. Html5简单存储localStorage和sessionStorage

    localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 1.localStorage : localStorage 没有时间限制的 ...

  9. Qt开发环境中使用报表控件FastReport遇到的一些问题(一)

    FastReport是一款优秀的报表控件,由俄罗斯开发,国内有代理商.Qt环境下可实现报表功能的还有一款叫NCReport,也是收费控件,比较来比较去还是觉得前者功能强点.网上讲解此控件在Qt中使用的 ...

  10. <转>两个蛋蛋的故事

    来自为知笔记(Wiz)