精华内容
下载资源
问答
  • 根据查询建立对应的,定时对重复的记录进行压缩转存至新,粒度变,数据记录变少。 4.利用缓存 利用缓存将一次查询“得来不易”的数据缓存住一段时间,从而提高效率。 5.nosql 利用非关系型数据库(暂未做尝试...
    1.合理建立索引

    通常查询利用到索引比不用索引更快,通过explain 可查看索引是否被使用.具体explain使用方法,如

    http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html

    当查询包含group by时 而group by字段属于索引字段时,如果查询结果不能通过group by松散或紧凑索引而决定,group by操作就会建立临时表根据文件排序(Using temporary; Using filesort)来得到结果,往往性能更低,但也不是绝对的,即使利用到了索引也不一定比没用到查询更快。

    2.建立分区

    对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能。

    3.建立粗粒度数据表

    根据查询建立对应的表,定时对重复的记录进行压缩转存至新表,粒度变大,数据记录变少。

    4.利用缓存

    利用缓存将一次查询“得来不易”的数据缓存住一段时间,从而提高效率。

    5.nosql

    利用非关系型数据库(暂未做尝试)。
    展开全文
  • 所用数据库占用空间大小如果想知道MySQL数据库中每个占用的空间、记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES ,这个主要字段分别是:TABLE_SCHEMA : 数据库名TABLE...

    所用数据库占用空间大小

    如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:

    TABLE_SCHEMA : 数据库名
    
    TABLE_NAME:表名
    
    ENGINE:所使用的存储引擎
    
    TABLES_ROWS:记录数
    
    DATA_LENGTH:数据大小
    
    INDEX_LENGTH:索引大小

    所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。

    进入 information_schema 这个数据库,执行如下sql 语句 :

    
    -- 查看数据库占用空间大小(数据大小 + 索引大小)
    
    
    -- 数据长度
    SELECT concat(round(sum(DATA_LENGTH/1024/1024/1024),2),'GB') as data_size FROM information_schema.TABLES where TABLE_SCHEMA='cgjr';
    
    -- 索引长度
    SELECT concat(round(sum(INDEX_LENGTH/1024/1024/1024),2),'GB') as len_size FROM information_schema.TABLES where TABLE_SCHEMA='cgjr';
    
    -- 总空间大小
    
    SELECT concat(round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2),'G')  as total_size FROM information_schema.TABLES where TABLE_SCHEMA='cgjr';
    
    
    -- 查看top10所有表的大小
    SELECT TABLE_NAME,round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2) as size_G,TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='cgjr' 
    GROUP BY  TABLE_NAME 
    ORDER BY round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024/1024,2) desc  LIMIT 10
    
    
    -- 查询所有数据库占用磁盘空间大小的SQL语句:
    select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024/1024,2),' GB') as data_size,
    concat(truncate(sum(index_length)/1024/1024/1024,2),'GB') as index_size,
    concat(truncate(sum(data_length)/1024/1024/1024,2)+truncate(sum(index_length)/1024/1024/1024,2),'GB') as total_size
    from information_schema.tables
    group by TABLE_SCHEMA
    order by truncate(sum(data_length)/1024/1024/1024,2)+truncate(sum(index_length)/1024/1024/1024,2) desc;
    
    
    
    --数据库中有几十上百张表,那么哪些表的数据量比较大呢,如何查询mysql数据库中哪些表的数据量最大
    
    -- 查询单个库中所有表磁盘占用大小的SQL语句:
    select TABLE_NAME, concat(truncate(data_length/1024/1024/1024,2),' GB') as data_size,
    concat(truncate(index_length/1024/1024/1024,2),' GB') as index_size,
    concat(truncate(data_length/1024/1024/1024,2)+truncate(index_length/1024/1024/1024,2),'GB') as total_size
    from information_schema.tables where TABLE_SCHEMA = 'cgjr'
    group by TABLE_NAME
    order by truncate(data_length/1024/1024/1024,2)+truncate(index_length/1024/1024/1024,2) desc LIMIT 10;
    
    
    -- 查询数据库缓存占用大小的sql语句:
    
    select TABLE_NAME, concat(truncate(data_length/1024/1024/1024,2),' GB') as data_size,
    concat(truncate(data_free/1024/1024/1024,2),'GB') as free_size
    from information_schema.tables where TABLE_SCHEMA = 'cgjr'
    group by TABLE_NAME
    order by concat(truncate(data_free/1024/1024/1024,2),'GB') desc LIMIT 10;
    -- 释放数据库表 缓存占用大小的sql语句:
    optimize table t_resource_file;
    结合mysql官方网站的信息,个人是这样理解的。当你删除数据时,mysql并不会回收,被已删除数据的占据的存储空间,以及索引位。而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。所以对于写比较频烦的表,要定期进行optimize,一个月一次,看实际情况而定了。
    
    举个例子来说吧。有100个php程序员辞职了,但是呢只是人走了,php的职位还在那里,这些职位不会撤销,要等新的php程序来填补这些空位。招一个好的程序员,比较难。我想大部分时间会空在那里。哈哈。
    
    展开全文
  • SQL数据库文件太大的解决方法

    万次阅读 2019-04-18 09:29:15
    在我们使用sql server数据库或者服务器时,有时会发现数据库不到一段时间,占用磁盘空间好,也有可能是数据的原因,也有可能是其他的原因,但如果说占用绝部分存储空间,而且数据量又不怎么,那么,这其中就有...

    在我们使用sql server数据库或者服务器时,有时会发现数据库不到一段时间,占用磁盘空间好大,也有可能是数据的原因,也有可能是其他的原因,但如果说占用绝大部分存储空间,而且数据量又不怎么大,那么,这其中就有问题了。

    1. 首先我们要清楚问题的原因之处;

      第一步:打开sql server数据库,数据库右键——属性——文件,在这个文件栏打开之后,我们会看到主数据文件和日志文件的初始大小和增长大小,如果日志文件太多,我们首先要考虑处理日志文件。

    2. 对数据库事务日志已满的处理方法:

      USE [master]

      GO

      ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT

      GO

      ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE

      GO

      USE 数据库名称

      GO

      DBCC SHRINKFILE (N'数据库名称_log' , 11, TRUNCATEONLY)

       

      GO

    3. 数据日志处理完之后,如果是日志的问题的话,这个时候磁盘的存储空间会多出来很多,如果不是这个问题的话,我们还要去查看数据库中每个表数据大小,看看是否是数据量很大这个原因导致的。

    4. IF OBJECT_ID('tempdb..#TablesSizes') IS NOT NULL

          DROP TABLE #TablesSizes

      CREATE TABLE #TablesSizes

          (

            TableName sysname ,

            Rows BIGINT ,

            reserved VARCHAR(100) ,

            data VARCHAR(100) ,

            index_size VARCHAR(100) ,

            unused VARCHAR(100)

          )

      DECLARE @sql VARCHAR(MAX)

      SELECT  @sql = COALESCE(@sql, '') + '

      INSERT INTO #TablesSizes execute sp_spaceused ''' + QUOTENAME(TABLE_SCHEMA,

                                                                    '[]') + '.'

              + QUOTENAME(Table_Name, '[]') + ''''

      FROM    INFORMATION_SCHEMA.TABLES

      WHERE   TABLE_TYPE = 'BASE TABLE'

      PRINT ( @SQL )

      EXECUTE (@SQL)

      SELECT  *

      FROM    #TablesSizes

      ORDER BY Rows DESC

    5. 当这些配置好了之后,我们发现确实是数据原因,这个时候,我们就要适当的去删除数据量比较大的表格了,删除完了之后,我们就要对表格进行压缩了。将磁盘的可用空间释放出来。

    6. 数据库右键——任务——压缩——数据库,来到上面的压缩数据库文件,这个时候我们要选择压缩的百分比了,设置好百分比之后,我们就开始执行,这个过程可能比较漫长,毕竟是对磁盘的一次重新组合,所以敬请等待,最终你会看到磁盘会空出很多可用空间。

    展开全文
  • MySQL数据库表Id过

    千次阅读 2020-03-31 15:57:37
    MySQL数据库表Id过,设置Id为自增的。 一次操作失误把Id设为了很的一个值10000001,导致后面增加的数据库数据id都是往上加。 我是用delete方式还是不行。 使用navicat的 也不行,最终只能使用truncate 这个方式...

    MySQL数据库表Id过大,设置Id为自增的。
    一次操作失误把Id设为了很大的一个值10000001,导致后面增加的数据库数据id都是往上加。
    我是用delete方式还是不行。
    使用navicat的
    在这里插入图片描述
    也不行,最终只能使用truncate 这个方式处理就好了。

    操作方法使用删除表的数据方式:
    truncate table 表名;
    delete from 表名;

    truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。
    truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。
    truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。
    如果只需删除表中的部分记录,只能使用DELETE语句配合where条件。 DELETE FROM 表名 WHERE……

    展开全文
  • 数据库中一张有千万条记录,现在有一个请求,需要查询所有记录,在不变动数据库的前提下,在写程序的时候,如何提高查询速度?是用多线程吗,如果用多线程,具体怎样实现呢?希望得到大家的指点,谢谢大家!
  • SQL2008R2数据库日志太大收缩方法

    千次阅读 2019-04-07 10:41:00
    双击SQL Server Management Studio打开数据库管理。登陆数据库 2.如下图,打开数据库属性窗口 3.如下图,更改数据库恢复模式 4.如下图,收缩数据库日志 到这里已经完成了,数据库的日志收缩 5.如下图...
  • 数据库表结构

    千次阅读 2018-08-20 16:28:54
    当前研发工作中经常出现因数据库表数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据库表的可读性不够高,表字段规则不统一,造成数据查询,数据使用效率低的问题,所以有...
  • zabbix监控数据库表空间大小

    千次阅读 2016-04-11 00:15:48
    通过该脚本取出空间名,并进行JSON格式化输出(因为zabbix的自动发现功能获取的数据类型是JSON格式的) #!/bin/bash TABLESPACE=`cat /home/patrol/tablespace.log |awk '{print$2}'|awk 'NR>3{
  • 在开发过程中,有时因数据库设计者未考虑周到,业务实体有一个属性没有对应的字段,因此需要在数据库表加一个字段,又由于此字段要求不可为空,并且在开发阶段,测试数据不多,有时是drop掉了原来的,增加了一个...
  • mysql数据库太大了怎么备份

    千次阅读 2018-05-14 23:57:51
    本地:1.进入MySQL目录下的bin文件夹:e:回车;e:\&... abc.sql(导出数据库abc到abc.sql文件)提示输入密码时,输入该数据库用户名的密码(如果导出单张的话在数据库名后面输入表名即可)如果提...
  • 数据库表设计

    万次阅读 2018-01-20 02:38:06
     (3) 发现某个的记录多,例如超过一千万条,则要对该进行水平分割。水平分割的做法是, 以该主键PK的某个值为界线,将该的记录水平分割为两个。若发现某个的字段多,例如超过 八十个,则垂直...
  • ”号都可以展开,也可以查询,也可以建表了,数据库可以用了。  6.  数据库――右键――属性――文件,这时可以看到日志文件的路径在哪里,以后要定时观察。   防止数据库日志过最好的办法是定时...
  • 数据库文件.mdf太大的解决方法

    千次阅读 2020-04-20 17:17:38
    在我们使用sql server数据库或者服务器时,有时会发现数据库不到一段时间,占用磁盘空间好,也有可能是数据的原因,也有可能是其他的原因,但如果说占用绝部分存储空间,而且数据量又不怎么,那么,这其中就有...
  • 最近调接口的时候接口访问历史报错: 检查之后发现空间满了,随后把相应空间进行了扩展,顺带总结了Oracle检查&调整空间的sql语句如下: ##--查看某张表的空间 select table_name,tablespace_name ...
  • 批量处理本来是为了提高性能,但是太大的数据提交,因为堆的膨胀,堆的寻址会造成性能反而下降。 PreparedStatement加executeBatch方法可以更快,主要想提高预编译sql文件的次数,从而达到提高效率。 如果
  • mysql数据库binlog日志太大的清理方法

    万次阅读 2018-10-29 10:33:32
    mysql数据库binlog日志太大的清理方法  1.查看binlog日志 mysql> show binary logs; +------------------+------------+ | Log_name | File_size | +------------------+------------+ | mysql...
  • 数据库表结构设计方法

    千次阅读 2011-02-12 20:46:00
    数据库表结构设计方法
  • MySQL创建数据库和创建数据

    万次阅读 多人点赞 2019-10-20 23:44:40
    MySQL 创建数据库和创建数据 MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。 在这之前,需要先安装好 MySQL ,然后创建好数据库、数据、操作用户。 一、数据库操作语言 数据库...
  • mysql数据库最大数量和最大库数量

    千次阅读 2016-01-11 11:32:28
    刚刚开始接触mysql,对mysql的配置项里是否有对一个数据库中,是否有最大数据的限制,后面查询了相关资料,才发现,mysql数据库中,对单个数据库中的最大允许建立的数据是没有配置项,也就是说没有限制的。...
  • 数据库分区

    万次阅读 2013-03-12 11:51:28
    数据库分区(一)什么情况下需要分区,准备需要分区的数据    什么数据库需要进行分区?首先看一下我们的案例:2010年6月我们六期IT开发团队接到一个XX全国连锁店的餐饮系统,经过一周的敏捷开发之后,XX餐饮...
  • SQL数据库的日志文件太大! 用管理->数据库维护计划来做 选择数据库->从数据库文件中删除未使用的空间 当数据库的大小超过n MB时收缩数据库 保留10% 的数据空间作为可用空间,这样可以调度执行,不需要手工操作。...
  • 数据库表结构设计方法及原则

    万次阅读 2017-03-23 08:50:27
     数据库设计的三范式:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须...
  • Oracle数据库是由一个个空间构成,空间是由多个数据文件,数据文件又是区间构成,区由Oracle块构成。下图借鉴自:https://www.cnblogs.com/chengxiao/p/5904783.html 1.Oracle空间数据文件大小的限制 ...
  • 数据量的数据库表设计技巧

    千次阅读 2013-03-06 12:02:40
    即使是一个非常简单的数据库应用系统,它的数据量增加到一定程度也会引起发一系列问题。如果在设计数据库的时候,就提前考虑这些问题,可以避免由于系统反映迟缓而引起的用户抱怨。 技巧1:尽量不要使用代码。比如...
  • MySQL基本操作一:数据库

    万次阅读 多人点赞 2018-05-23 21:55:49
    本章,主要就数据库的基本操作作以总结。 需要事先说明的一点是,我写的所有MySQL的代码将采用大写形式。虽然说至少在MySQL环境下,SQL语句的小写并不会影响代码运行结果,但是,有同行讲到,SQL语句大写比...
  • mysql 数据库表结构设计与规范

    千次阅读 2017-06-06 15:00:16
    mysql 数据库表结构设计与规范DDL(data difinition language)就是数据定义语言。1.sql语句的界定符[code]– 默认情况下” ; ” 代表sql语句的结束 delimiter 新的界定符 – 修改 // 为界定符 delimiter //2.创建...
  • 显示数据库表中的数据

    千次阅读 2010-03-14 22:32:00
    本教程的目的是向你介绍如何在ASP.NET MVC程序里显示一个数据库数据的HTML表格。首先,介绍了如何直接在视图中格式化数据库记录。接着,介绍了格式化...Movies 数据库表包含下面的列: 列名称数据类型允许空值IdIntF
  • 数据库表的设计原则

    千次阅读 2018-05-12 07:41:19
    数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护 步骤 一、需求分析 调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、...
  • 数据库表结构设计浅谈

    万次阅读 2010-10-21 09:31:00
     基本上在设计数据库表的时候,首先考虑设计要满足功能需求,这是最根本的,其次是满足性能需求,再次则是满足扩展性需求,这一点在规模系统中是必须要考虑的。功能性需求比较容易满足,下面我主

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 757,032
精华内容 302,812
关键字:

数据库表太大怎么办