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. android通知栏Notification点击,取消,清除响应事件

    主要是检测android通知栏的三种状态的响应事件 这次在实现推送需求的时候,要用到android通知栏Notification点击后进入消息页面,因为要实现一个保存推送用户名字的功能,我在点击后处理 ...

  2. jquery.SuperSlide.2.1.2--轮播(兼容到IE7 适用于整屏)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  3. E:Sudoku

    总时间限制: 2000ms 内存限制: 65536kB描述Sudoku is a very simple task. A square table with 9 rows and 9 columns ...

  4. JQ弹出框移动-插件分享~~~

    <script src="js/jQuery8.3.js" type="text/javascript"></script> <s ...

  5. myeclipse注册码生成器

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public cl ...

  6. Aspose 强大的服务器端 excel word ppt pdf 处理工具

    Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx

  7. iOS开发Swift篇—(八)函数(2)

    iOS开发Swift篇—(八)函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 func sum(num1: Int ...

  8. 拓扑编号 vijos1790

    题意就是拓扑排序,要求1的序号尽可能小,然后2的序号尽可能小,3,4... 一开始很容易想到直接贪心,每次选一个入度为0的点,如果有多个,就选编号最小的那个,但是很容易找到反例. 看了下题解,应该是反 ...

  9. ASP.NET使用Razor语法无法正确识别.cshtml文件

    ASP.NET使用WebPage编程的好处之一是可以使用强大的Razor语法, 但初次使用Razor语法会碰到一个比较头疼的问题就是无法直接写一个.cshtml让浏览器去识别,查资料也没有找到相关问题 ...

  10. 在Eclipse上建立hadoop2.2.0/hadoop2.4.0源代码阅读环境

    1.安装依赖的包: yum install gcc-c++ g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev 2 ...