如何查询mysql数据库中哪些表的数据量最大

如何查询mysql数据库中哪些表的数据量最大,第1张

数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询这些信息了。

在mysql的information_schema下有存储数据库基本信息的数据字典表,可以通过查询tables表来获得所需要的表相关信息。

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

|mysql |

|report |

| report_result |

|test |

+--------------------+

5 rows in set (002 sec)

mysql> use information_schema;

Database changed

mysql> show tables;

+---------------------------------------+

|Tables_in_information_schema |

+---------------------------------------+

|CHARACTER_SETS |

|COLLATIONS |

| COLLATION_CHARACTER_SET_APPLICABILITY |

|COLUMNS |

|COLUMN_PRIVILEGES |

|KEY_COLUMN_USAGE |

|PROFILING |

|ROUTINES |

|SCHEMATA |

|SCHEMA_PRIVILEGES |

|STATISTICS |

|TABLES |

|TABLE_CONSTRAINTS |

|TABLE_PRIVILEGES |

|TRIGGERS |

|USER_PRIVILEGES |

|VIEWS |

+---------------------------------------+

17 rows in set (000 sec)

那么我们查看一下talbes表结构信息,看看存储的具体信息

mysql> desc 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) | YES | |NULL | |

| ROW_FORMAT | varchar(10) | YES | | NULL | |

| TABLE_ROWS | bigint(21) | YES | | NULL | |

| AVG_ROW_LENGTH | bigint(21) | YES | | NULL | |

| DATA_LENGTH | bigint(21) | YES | | NULL | |

| MAX_DATA_LENGTH | bigint(21) | YES | | NULL | |

| INDEX_LENGTH | bigint(21) | YES | | NULL | |

| DATA_FREE | bigint(21) |YES | | NULL | |

| AUTO_INCREMENT | bigint(21) | YES | | NULL | |

| CREATE_TIME | datetime |YES | | NULL | |

| UPDATE_TIME | datetime |YES | | NULL | |

| CHECK_TIME | datetime |YES | | NULL | |

| TABLE_COLLATION | varchar(64) | YES | |NULL | |

| CHECKSUM | bigint(21) |YES | | NULL | |

| CREATE_OPTIONS | varchar(255) | YES | |NULL | |

| TABLE_COMMENT | varchar(80) | NO | | | |

+-----------------+--------------+------+-----+---------+-------+

21 rows in set (000 sec)

主要存储了表的信息如表使用的引擎,表的类型等信息。我们可以通过查询table_rows属性获得哪些表数据量比较大。

mysql> select table_name,table_rows from tables order by table_rows desc limi 10;

+---------------+------------+

| table_name |table_rows |

+---------------+------------+

| task6 | 1558845 |

| task | 1554399 |

| task5 | 1539009 |

| task3 | 1532169 |

| task1 | 1531143 |

| task2 | 1531143 |

| task4 | 1521225 |

| task7 | 980865 |

我们继续深入思考,这些存储的数据是否准确,是否真实的反应了表中数据量大小?

mysql> show create table tables \G;

1 row

Table: TABLES

Create Table: CREATE TEMPORARY TABLE`TABLES` (

`TABLE_CATALOG` varchar(512) default NULL,

`TABLE_SCHEMA` varchar(64) NOT NULL default '',

`TABLE_NAME` varchar(64) NOT NULL default '',

`TABLE_TYPE` varchar(64) NOT NULL default '',

&nb

MySQL服务器的最大并发连接数是16384。

受服务器配置,及网络环境等制约,实际服务器支持的并发连接数会小一些。主要决定因素有:

1、服务器CPU及内存的配置。

2、网络的带宽。互联网连接中上行带宽的影响尤为明显。

扩展资料:

优化数据库结构:

组织数据库的schema、表和字段以降低I/O的开销,将相关项保存在一起,并提前规划,以便随着数据量的增长,性能可以保持较高的水平。

设计数据表应尽量使其占用的空间最小化,表的主键应尽可能短。·对于InnoDB表,主键所在的列在每个辅助索引条目中都是可复制的,因此如果有很多辅助索引,那么一个短的主键可以节省大量空间。

仅创建需要改进查询性能的索引。索引有助于检索,但是会增加插入和更新 *** 作的执行时间。

InnoDB的特性:

InnoDB提供了的配置,可减少维护辅助索引所需的磁盘I/O。大规模的数据库可能会遇到大量的表 *** 作和大量的I/O,以保证辅助索引保持最新。当相关页面不在缓冲池里面时,InnoDB的将会更改缓存到辅助索引条目。

从而避免因不能立即从磁盘读取页面而导致耗时的I/O *** 作。当页面被加载到缓冲池时,缓冲的更改将被合并,更新的页面之后会刷新到磁盘。这样做可提高性能,适用于MySQL55及更高版本。

数据库存储最终也保存到文件里面。

mysql安装目录下面有一个myini文件,在这个文件里面搜索datadir

这行,其中datadir指向一个目录,这个目录是mysql数据库文件的存贮路径,然后你可以查看使用量了。

在我们使用MySQL数据库时,比较常用也是查询,包括基本查询,关联查询,条件查询等等,对于同一个 *** 作,SQL语句的实现有很多种写法,但是不同的写法查询的性能可能会有很大的差异。这里主要介绍下select查询优化的要点。

1 使用慢查询日志去发现慢查询。

2 使用执行计划去判断查询是否正常运行。

3 总是去测试你的查询看看是否他们运行在最佳状态下 –久而久之性能总会变化。

4 避免在整个表上使用count(),它可能锁住整张表。

5 使查询保持一致以便后续相似的查询可以使用查询缓存。

6 在适当的情形下使用GROUP BY而不是DISTINCT。

7 在WHERE, GROUP BY和ORDER BY子句中使用有索引的列。

8 保持索引简单,不在多个索引中包含同一个列。

9 有时候MySQL会使用错误的索引,对于这种情况使用USE INDEX。

10 检查使用SQL_MODE=STRICT的问题。

11对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR

12 为了 避免在更新前SELECT,使用INSERT ON DUPLICATE KEY或者INSERT IGNORE ,不要用UPDATE去实现。

3 不要使用 MAX,使用索引字段和ORDER BY子句。

14 避免使用ORDER BY RAND()

15 LIMIT M,N实际上可以减缓查询在某些情况下,有节制地使用。

16 在WHERE子句中使用UNION代替子查询。

17 对于UPDATES(更新),使用 SHARE MODE(共享模式),以防止独占锁。

18 在重新启动的MySQL,记得来温暖你的数据库,以确保您的数据在内存和查询速度快。

19 使用DROP TABLE,CREATE TABLE DELETE FROM从表中删除所有数据。

20 最小化的数据在查询你需要的数据,使用消耗大量的时间。

21 考虑持久连接,而不是多个连接,以减少开销。

22 基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询。

23 当负载增加您的服务器上,使用SHOW PROCESSLIST查看慢的和有问题的查询。

24 在开发环境中产生的镜像数据中 测试的所有可疑的查询。

来源:PHP程序员雷雪松的博客

以上就是关于如何查询mysql数据库中哪些表的数据量最大全部的内容,包括:如何查询mysql数据库中哪些表的数据量最大、mysql数据库最大能支持多少并发量(mysql的最大并发数据量是多少)、怎么查看mysql数据库使用量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10156166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存