MySQL5.6ではinnodb_file_per_tableがDefaultでテーブル毎にテーブルスペース(ファイル)が作成されますが、MySQL5.7.6 DMRからは、CREATE TABLESPACEステートメントによって、
複数テーブルで共有出来るテーブルスペースが作成出来るようになりました。また、Defaultデータディレクトリーとは別のパスにテーブルスペースを作成出来るので、
負荷が高いテーブルなどをSSDなどに配置するなど柔軟に対応することが可能になります。Oracle(テーブルスペース)やMS SQL(ファイルグループ)に関しては、
以前から同様に指定出来ますが、オープンソースデータベースのMySQLは5.7になり、更にそれらの商用データベースと同様の機能も利用出来る汎用性を備えたデータベースになってきました。
MySQL5.7はまだ5.7.7RCですが、更に新たな機能が追加されているので適宜可能な範囲で、こちらにてご紹介したいとお思います。

参照: 13.1.15 CREATE TABLESPACE Syntax
CREATE TABLESPACE is supported with InnoDB as of MySQL 5.7.6.
A general tablespace is a shared tablespace, similar to the system tablespace.
It can hold multiple tables, and supports all table row formats.
General tablespaces can also be created in a location relative to or independent of the MySQL data directory.

Tablespaceの作成


root@localhost [USER01]> CREATE TABLESPACE U_TABLESPACE01 ADD DATAFILE '/home/mysql/user_tablespace01.ibd' Engine=InnoDB;
Query OK, 0 rows affected (0.01 sec)

root@localhost [USER01]> CREATE TABLESPACE U_TABLESPACE02_8K ADD DATAFILE '/home/mysql/user_tablespace02_8k.ibd' FILE_BLOCK_S8192 Engine=InnoDB;
Query OK, 0 rows affected (0.01 sec)

テーブルスペースを指定してテーブルを作成

root@localhost [USER01]> CREATE TABLE `T_USER01` (
    -> `id` int(11) NOT NULL AUTO_INCREMENT,
    -> `text` varchar(100) DEFAULT NULL,
    ->  PRIMARY KEY (`id`)
    ->  ) TABLESPACE = U_TABLESPACE01 ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.01 sec)

root@localhost [USER01]> CREATE TABLE `T_USER02_8K` (
    -> `id` int(11) NOT NULL AUTO_INCREMENT,
    -> `text` varchar(100) DEFAULT NULL,
    -> PRIMARY KEY (`id`)
    -> ) TABLESPACE = U_TABLESPACE02_8K ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED KEY_BLOC=8;
Query OK, 0 rows affected (0.00 sec)

root@localhost [USER01]> SELECT * FROM information_schema.INNODB_SYS_TABLESPACES where NAME like 'U_%';
+-------+-------------------+------+-------------+------------+-----------+---------------+------------+
| SPACE | NAME              | FLAG | FILE_FORMAT | ROW_FORMAT | PAGE_SIZE | ZIP_PAGE_SIZE | SPACE_TYPE |
+-------+-------------------+------+-------------+------------+-----------+---------------+------------+
|   165 | U_TABLESPACE01    | 2048 | Any         | Any        |     16384 |             0 | General    |
|   166 | U_TABLESPACE02_8K | 2089 | Barracuda   | Compressed |     16384 |          8192 | General    |
+-------+-------------------+------+-------------+------------+-----------+---------------+------------+
2 rows in set (0.00 sec)

tablespace2

Defaultデータディレクトリーとは別にテーブルスペースが作成されている事を確認


root@localhost [USER01]> show variables like 'datadir';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)

root@localhost [USER01]> system ls /home/mysql/
user_tablespace01.ibd  user_tablespace02_8k.ibd
root@localhost [USER01]> 

先程、T_USER01を作成してテーブルスペースに追加でテーブルを作成


root@localhost [USER01]> CREATE TABLE `T_USER02` (
    -> `id` int(11) NOT NULL AUTO_INCREMENT,
    -> `text` varchar(100) DEFAULT NULL,
    -> PRIMARY KEY (`id`)
    -> ) TABLESPACE = U_TABLESPACE01 ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.00 sec)

root@localhost [USER01]> show tables;
+------------------+
| Tables_in_USER01 |
+------------------+
| T_USER01         |
| T_USER02         |
| T_USER02_8K      |
+------------------+
3 rows in set (0.00 sec)

root@localhost [USER01]> SELECT * FROM information_schema.INNODB_SYS_TABLES where NAME LIKE 'USER%';
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
| TABLE_ID | NAME               | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE | SPACE_TYPE |
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
|      171 | USER01/T_USER01    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
|      173 | USER01/T_USER02    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
|      172 | USER01/T_USER02_8K |  169 |      5 |   166 | Barracuda   | Compressed |          8192 | General    |
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
3 rows in set (0.00 sec)

root@localhost [USER01]> 

tablespace_innodb

既存のテーブルを共通テーブルスペースへ移動する場合はAlter Tableコマンドにて対応

root@localhost [USER01]> CREATE TABLE `T_USER03` (
    -> `id` int(11) NOT NULL AUTO_INCREMENT,
    -> `text` varchar(100) DEFAULT NULL,
    -> PRIMARY KEY (`id`)
    -> ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.03 sec)

root@localhost [USER01]> SELECT * FROM information_schema.INNODB_SYS_TABLES where NAME LIKE 'USER%';
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
| TABLE_ID | NAME               | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE | SPACE_TYPE |
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
|      171 | USER01/T_USER01    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
|      173 | USER01/T_USER02    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
|      172 | USER01/T_USER02_8K |  169 |      5 |   166 | Barracuda   | Compressed |          8192 | General    |
|      174 | USER01/T_USER03    |    1 |      5 |   167 | Antelope    | Compact    |             0 | Single     |
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
4 rows in set (0.00 sec)

root@localhost [USER01]> ALTER TABLE T_USER03 TABLESPACE U_TABLESPACE01;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

root@localhost [USER01]> SELECT * FROM information_schema.INNODB_SYS_TABLES where NAME LIKE 'USER%';
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
| TABLE_ID | NAME               | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE | SPACE_TYPE |
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
|      171 | USER01/T_USER01    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
|      173 | USER01/T_USER02    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
|      172 | USER01/T_USER02_8K |  169 |      5 |   166 | Barracuda   | Compressed |          8192 | General    |
|      175 | USER01/T_USER03    |  129 |      5 |   165 | Antelope    | Compact    |             0 | General    |
+----------+--------------------+------+--------+-------+-------------+------------+---------------+------------+
4 rows in set (0.00 sec)

root@localhost [USER01]> 

tablespace_alter

メモ:
5.7でサポートされる以下のページサイズも対応していますが、圧縮機能はサポートされていません。
64K 64K (65536) Compression is not supported
32K 32K (32768) Compression is not supported

Tablespace Row Formatのサポートについて
General tablespaces support all table row formats (REDUNDANT, COMPACT, DYNAMIC, COMPRESSED)
with the caveat that compressed and uncompressed tables cannot exist in the same general tablespace due to different physical page sizes.


リストア中は当然、ロックがかかり他のユーザーは利用出来ませんが、
特定テーブルのみのリストアで済めば最小限の影響範囲に留める事が出来るかもしれません。

■テストテーブルを作成してデータを登録

root@localhost > CREATE TABLE `BR_TEST` (
    ->   `id` int(20) NOT NULL AUTO_INCREMENT,
    ->   `name` varchar(32) NOT NULL DEFAULT '',
    ->   PRIMARY KEY (`id`)
    -> ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)

root@localhost > insert into BR_TEST(name) value("NAME-1");
Query OK, 1 row affected (0.02 sec)

root@localhost > insert into BR_TEST(name) value("NAME-2");
Query OK, 1 row affected (0.02 sec)

root@localhost > insert into BR_TEST(name) value("NAME-3");
Query OK, 1 row affected (0.01 sec)

root@localhost > 

■特定データベース全体のバックアップ

[admin@CentOS02 bin]$ mysqldump --databases --single-transaction test > /home/admin/testDB20140925.sql -u root -p
Enter password: 
[admin@CentOS02 bin]$ ls -l /home/admin/
合計 4
-rw-rw-r--. 1 admin admin 2877  9月 25 19:46 testDB20140925.sql
[admin@CentOS02 bin]$ 

[admin@CentOS02 bin]$ cat /home/admin/testDB20140925.sql | grep CREATE
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE TABLE `BR_TEST` (
CREATE TABLE `federated_table` (
[admin@CentOS02 bin]$ 

■特定テーブルのみリストアするため、csplitでテーブル単位にバックアップを分割する。

[admin@CentOS02 ~]$ csplit testDB20140925.sql '/DROP TABLE IF EXISTS/' {*}
973
687
1217
[admin@CentOS02 ~]$ 

[admin@CentOS02 ~]$ ls -l
合計 16
-rw-rw-r--. 1 admin admin 2877  9月 25 19:46 testDB20140925.sql
-rw-rw-r--. 1 admin admin  973  9月 25 19:57 xx00
-rw-rw-r--. 1 admin admin  687  9月 25 19:57 xx01
-rw-rw-r--. 1 admin admin 1217  9月 25 19:57 xx02
[admin@CentOS02 ~]$ 

■ リストア対象テーブル用Scriptを抜粋

[admin@CentOS02 ~]$ cat xx01
DROP TABLE IF EXISTS `BR_TEST`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `BR_TEST` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `BR_TEST`
--

LOCK TABLES `BR_TEST` WRITE;
/*!40000 ALTER TABLE `BR_TEST` DISABLE KEYS */;
INSERT INTO `BR_TEST` VALUES (1,'NAME-1'),(2,'NAME-2'),(3,'NAME-3');
/*!40000 ALTER TABLE `BR_TEST` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `federated_table`
--

[admin@CentOS02 ~]$ 

■対象テーブルを間違えてTruncateしたと仮定してデータ削除

root@localhost > truncate table BR_TEST;
Query OK, 0 rows affected (0.09 sec)

root@localhost > select count(*) from BR_TEST;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

root@localhost > 

■特定テーブルのリストア処理とデータが戻っていることを確認

[admin@CentOS02 ~]$ mysql -u root -p test < /home/admin/xx01
Enter password: 
[admin@CentOS02 ~]$ 


root@localhost > select count(*) from BR_TEST;
+----------+
| count(*) |
+----------+
|        3 |
+----------+
1 row in set (0.01 sec)

root@localhost > 

余談:
■対象テーブルがトランザクション中だと、リストアは待たされます。
 反対にリストア中はテーブルは参照出来ません。

root@localhost > lock table BR_TEST READ;
Query OK, 0 rows affected (0.00 sec)
                                      <----この間はリストアも待ちになります。
root@localhost > UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

root@localhost > select * from BR_TEST;
+----+--------+
| id | name   |
+----+--------+
|  1 | NAME-1 |
|  2 | NAME-2 |
|  3 | NAME-3 |
+----+--------+
3 rows in set (0.00 sec)

root@localhost >


MYSQLにてテーブルサイズの調査を行う。


select
table_name, engine, table_rows as tbl_rows, avg_row_length as rlen,
floor((data_length+index_length)/1024/1024) as allMB,
floor((data_length)/1024/1024) as dMB,
floor((index_length)/1024/1024) as iMB
from information_schema.tables
where table_schema=database()
order by (data_length+index_length) desc;


+------------------+--------+----------+-------+-------+------+------+
| table_name | engine | tbl_rows | rlen | allMB | dMB | iMB |
+------------------+--------+----------+-------+-------+------+------+
| mt_searchlog | MyISAM | 2799447 | 146 | 418 | 390 | 27 |
| mt_entry | MyISAM | 9434 | 12629 | 114 | 113 | 1 |
| mt_log | MyISAM | 59543 | 257 | 17 | 14 | 3 |
| mt_entryphotoAll | MyISAM | 80260 | 47 | 5 | 3 | 1 |
| mt_trackback | MyISAM | 8908 | 278 | 2 | 2 | 0 |
| mt_template | MyISAM | 373 | 2870 | 1 | 1 | 0 |
| mt_placement | MyISAM | 9447 | 18 | 0 | 0 | 0 |
| mt_entryphoto | MyISAM | 9079 | 37 | 0 | 0 | 0 |
| mt_session | MyISAM | 2536 | 96 | 0 | 0 | 0 |
| mt_tbping | MyISAM | 493 | 473 | 0 | 0 | 0 |
| mt_rfdata | MyISAM | 256 | 288 | 0 | 0 | 0 |
| mt_plugindata | MyISAM | 7 | 3074 | 0 | 0 | 0 |
| mt_category | MyISAM | 151 | 52 | 0 | 0 | 0 |
| mt_errorlist | MyISAM | 19 | 572 | 0 | 0 | 0 |
| mt_blog | MyISAM | 4 | 379 | 0 | 0 | 0 |
| mt_tag | MyISAM | 5 | 22 | 0 | 0 | 0 |
| mt_templatemap | MyISAM | 12 | 77 | 0 | 0 | 0 |
| mt_author | MyISAM | 3 | 114 | 0 | 0 | 0 |
| mt_permission | MyISAM | 14 | 88 | 0 | 0 | 0 |
| mt_categoryinfo | MyISAM | 11 | 207 | 0 | 0 | 0 |
| mt_config | MyISAM | 1 | 80 | 0 | 0 | 0 |
| test2 | MyISAM | 2 | 7 | 0 | 0 | 0 |
| mt_accessranking | MyISAM | 0 | 0 | 0 | 0 | 0 |
| mt_comment | MyISAM | 0 | 0 | 0 | 0 | 0 |
| mt_notification | MyISAM | 0 | 0 | 0 | 0 | 0 |
| mt_objecttag | MyISAM | 0 | 0 | 0 | 0 | 0 |
| mt_fileinfo | MyISAM | 0 | 0 | 0 | 0 | 0 |
| mt_ipbanlist | MyISAM | 0 | 0 | 0 | 0 | 0 |
| mt_sendping | MyISAM | 0 | 0 | 0 | 0 | 0 |
+------------------+--------+----------+-------+-------+------+------+
29 rows in set (0.00 sec)

mysql>

■参考
http://opendatabaselife.blogspot.com/2009_08_01_archive.html
http://webmemo.uzuralife.com/category/pkweryrfvid.html/?search=&opt=0&order=0&from=380


MYSQLのテーブルサイズを確認する為にinformation_schema.tablesを利用してみる。
運用する上で、負荷の高い原因となってるテーブルを確認する。

mysql> desc information_schema.tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG   | varchar(512)        | YES  |     | NULL    |       |
| TABLE_SCHEMA    | varchar(64)         | NO   |     |         |       |
| TABLE_NAME      | varchar(64)         | NO   |     |         |       |
| TABLE_TYPE      | varchar(64)         | NO   |     |         |       |
| ENGINE          | varchar(64)         | YES  |     | NULL    |       |
| VERSION         | bigint(21) unsigned | YES  |     | NULL    |       |
| ROW_FORMAT      | varchar(10)         | YES  |     | NULL    |       |
| TABLE_ROWS      | bigint(21) unsigned | YES  |     | NULL    |       |
| AVG_ROW_LENGTH  | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_LENGTH     | bigint(21) unsigned | YES  |     | NULL    |       |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
| INDEX_LENGTH    | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_FREE       | bigint(21) unsigned | YES  |     | NULL    |       |
| AUTO_INCREMENT  | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_TIME     | datetime            | YES  |     | NULL    |       |
| UPDATE_TIME     | datetime            | YES  |     | NULL    |       |
| CHECK_TIME      | datetime            | YES  |     | NULL    |       |
| TABLE_COLLATION | varchar(32)         | YES  |     | NULL    |       |
| CHECKSUM        | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_OPTIONS  | varchar(255)        | YES  |     | NULL    |       |
| TABLE_COMMENT   | varchar(80)         | NO   |     |         |       |
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.01 sec)

mysql>
mysql> select database();
+------------+
| database() |
+------------+
| STUDY      |
+------------+
1 row in set (0.00 sec)
select
table_name, engine, table_rows as tbl_rows, avg_row_length as rlen,
floor((data_length+index_length)/1024/1024) as 'ToTal(MB)',
floor((data_length)/1024/1024) as 'DATA(MB)',
floor((index_length)/1024/1024) as 'INDEX(MB)'
from information_schema.tables
where table_schema=database()
order by (data_length+index_length) desc;

MySQL5.7にて実行した内容は以下@20141218

select TABLE_SCHEMA,table_name, engine, table_rows as tbl_rows, 
avg_row_length as rlen,floor((data_length+index_length)/1024/1024) as 'ToTal(MB)',
floor((data_length)/1024/1024) as 'DATA(MB)',floor((index_length)/1024/1024) as 'INDEX(MB)' 
from information_schema.tables WHERE TABLE_SCHEMA NOT IN ('mysql','INFORMATION_SCHEMA','performance_schema')
AND ENGINE IS NOT NULL
order by (data_length+index_length) desc;
root@localhost [information_schema]>select TABLE_SCHEMA,table_name, engine, table_rows as tbl_rows, 
    -> avg_row_length as rlen,floor((data_length+index_length)/1024/1024) as 'ToTal(MB)',
    -> floor((data_length)/1024/1024) as 'DATA(MB)',floor((index_length)/1024/1024) as 'INDEX(MB)' 
    -> from information_schema.tables WHERE TABLE_SCHEMA NOT IN ('mysql','INFORMATION_SCHEMA','performance_schema')
    -> AND ENGINE IS NOT NULL
    -> order by (data_length+index_length) desc;
+--------------+----------------------+--------+----------+-------+-----------+----------+-----------+
| TABLE_SCHEMA | table_name           | engine | tbl_rows | rlen  | ToTal(MB) | DATA(MB) | INDEX(MB) |
+--------------+----------------------+--------+----------+-------+-----------+----------+-----------+
| nyosm        | nodes                | InnoDB |  5226742 |   132 |       865 |      659 |       206 |
| nyosm        | waytags              | InnoDB |  4564009 |    57 |       602 |      250 |       351 |
| nyosm        | waynodes             | InnoDB |  6244646 |    50 |       429 |      301 |       127 |
| nyosm        | nodetags             | InnoDB |   648414 |    60 |        93 |       37 |        55 |
| nyosm        | ways                 | InnoDB |   868452 |    88 |        91 |       73 |        17 |
| nyosm        | relationtags         | InnoDB |    28733 |    91 |         7 |        2 |         4 |
| nyosm        | relationmembers      | InnoDB |    73485 |    64 |         6 |        4 |         1 |
| sakila       | rental               | InnoDB |    16005 |    99 |         2 |        1 |         1 |
| sakila       | payment              | InnoDB |    16086 |    98 |         2 |        1 |         0 |
| nyosm        | relations            | InnoDB |     4748 |    89 |         0 |        0 |         0 |
| sakila       | inventory            | InnoDB |     4581 |    39 |         0 |        0 |         0 |
| sakila       | film_actor           | InnoDB |     5462 |    35 |         0 |        0 |         0 |
| sakila       | film                 | InnoDB |     1000 |   196 |         0 |        0 |         0 |
| sakila       | film_text            | InnoDB |     1000 |   180 |         0 |        0 |         0 |
| sakila       | customer             | InnoDB |      599 |   136 |         0 |        0 |         0 |
| sakila       | address              | InnoDB |      603 |   163 |         0 |        0 |         0 |
| sakila       | staff                | InnoDB |        2 | 32768 |         0 |        0 |         0 |
| sakila       | film_category        | InnoDB |     1000 |    65 |         0 |        0 |         0 |
| sakila       | city                 | InnoDB |      600 |    81 |         0 |        0 |         0 |
| sakila       | store                | InnoDB |        2 |  8192 |         0 |        0 |         0 |
| sakila       | actor                | InnoDB |      200 |    81 |         0 |        0 |         0 |
| myhttp       | json_types           | InnoDB |        0 |     0 |         0 |        0 |         0 |
| myhttp       | hello                | InnoDB |        6 |  2730 |         0 |        0 |         0 |
| sakila       | country              | InnoDB |      109 |   150 |         0 |        0 |         0 |
| myhttp       | dojo_jsonp_fields    | InnoDB |        2 |  8192 |         0 |        0 |         0 |
| myhttp       | dojo_jsonp           | InnoDB |        2 |  8192 |         0 |        0 |         0 |
| sakila       | category             | InnoDB |       16 |  1024 |         0 |        0 |         0 |
| myhttp       | crud_messages        | InnoDB |        0 |     0 |         0 |        0 |         0 |
| myhttp       | compound_primary_key | InnoDB |        4 |  4096 |         0 |        0 |         0 |
| myhttp       | blog_posts           | InnoDB |        0 |     0 |         0 |        0 |         0 |
| myhttp       | sql_types            | InnoDB |        2 |  8192 |         0 |        0 |         0 |
| myhttp       | simple               | InnoDB |       20 |   819 |         0 |        0 |         0 |
| sakila       | language             | InnoDB |        6 |  2730 |         0 |        0 |         0 |
| myhttp       | no_primary_key       | InnoDB |        3 |  5461 |         0 |        0 |         0 |
+--------------+----------------------+--------+----------+-------+-----------+----------+-----------+
34 rows in set (0.02 sec)

root@localhost [information_schema]>select @@version;
+---------------------+
| @@version           |
+---------------------+
| 5.7.5-labs-http-log |
+---------------------+
1 row in set (0.00 sec)

root@localhost [information_schema]>

特定DBのテーブルサイズ確認
db_size2

MYSQLデータベースのテーブル確認
mysql_db


SQL2000, SQL2005, SQL2008でテーブルサイズを調査するクエリー
テーブル名、行数、データサイズ(MB)


SELECT object_name(id)as 'Table Name' ,rowcnt as 'Number of Rows',
dpages as 'Number of Pages',(dpages * 8 )/1024 'サイズ(MB)'
FROM sysindexes
WHERE indid IN (1,0)
AND OBJECTPROPERTY(id, 'IsUserTable') = 1
ORDER BY 'サイズ(MB)' DESC


OSによって大文字小文字の区別が違うので、大文字小文字の扱いで面倒になることも多少あると思います。
MYSQLでは扱いを楽にするために以下の設定が準備されています。

    ※データベース、テーブルなどのオブジェクトを作成する前に設定しておいた方が良い。

MySQL において、データベースはデータディレクトリ内のディレクトリに対応しています。
データベース内の各テーブルも、データベースディレクトリ内の少なくとも1つ(記憶エンジンによってはそれ以上)
のファイルに対応しています。そのため、ベースとなっているオペレーティングシステムで大文字と小文字が区別
される場合、データベース名とテーブル名でも大文字と小文字が区別されます。つまり、Windows ではデータベース
名とテーブル名で大文字と小文字は区別されず、ほとんどの種類の Unix では大文字と小文字が区別されること
になります。ただし、重要な例外が 1 つあります。Mac OS X で、Unixをベースとしているがデフォルトの
HFS+ ファイルシステムを使用している場合です。この場合は大文字と小文字が区別されません。
しかし、Mac OS X は UFS ボリュームもサポートしています。UFS ボリュームでは Unix の場合と同じように
Mac OS X でも大文字と小文字が区別されます。


mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)

mysql>

lowercase


mysql> CREATE DATABASE CaseSensitive;
Query OK, 1 row affected (0.00 sec)

mysql> use Casesensitive;
ERROR 1049 (42000): Unknown database 'Casesensitive'
mysql> use CaseSensitive;
Database changed
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| CaseSensitive |
| DB01 |
| DB02 |
| MyAdmin |
| STUDY |
| TEST |
| client_test_db |
| mysql |
+--------------------+
9 rows in set (0.01 sec)

mysql>

database_casesensitive

詳細情報
8.2.2. 識別子の大文字/小文字区別


testデータベースのT1テーブルとT2テーブルをbackup_test_T1_T2.sql
ファイルにバックアップ。

[root@colinux ~]# mysqldump test T1 T2 > /tmp/backup_test_T1_T2.sql -u root -p
Enter password:
[root@colinux ~]# ls -l /tmp/backup_test_T1_T2.sql
-rw-r–r– 1 root root 2754 2009-02-06 11:07 /tmp/backup_test_T1_T2.sql
[root@colinux ~]#

backup_sp

backup_sp_result


mysql> select column_name from information_schema.columns where table_schema = ‘test’ and table_name=’T01′;
+————–+
| column_name |
+————–+
| company_id |
| company_name |
| create_date |
+————–+
3 rows in set (0.00 sec)

mysql>

mysql> desc test.T01;
+————–+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————–+————–+——+—–+———+—————-+
| company_id | int(4) | NO | PRI | NULL | auto_increment |
| company_name | varchar(255) | YES | | NULL | |
| create_date | timestamp | YES | | NULL | |
+————–+————–+——+—–+———+—————-+
3 rows in set (0.00 sec)

mysql>

mysql> SHOW COLUMNS FROM T01 FROM test;
+————–+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————–+————–+——+—–+———+—————-+
| company_id | int(4) | NO | PRI | NULL | auto_increment |
| company_name | varchar(255) | YES | | NULL | |
| create_date | timestamp | YES | | NULL | |
+————–+————–+——+—–+———+—————-+
3 rows in set (0.00 sec)

mysql>