100M的MYSQL数据库可以存放多少东西

100M的MYSQL数据库可以存放多少东西,第1张

这个取决于你每个记录占多大空间了

譬如,你一行记录就一个整型字段,那就占4Byte

如果再加上一个最长20字符的英文字符串,估计平均为15,

那就变成19byte

估计完这个,用100M×80%除一下就是了

文章摘要

从最初的数据发展到今天的大型数据库管理系统,成为我们日常生活中重要的组成部分。假如不借助数据库的帮助,好多简单的工作将会变得冗长乏味,甚至会难以实现。本文从ACESS数据库的特征及与SQL SERVE数据库的区别展开详细的论述。

关键字

VBA语言 ,ACCESS数据库,ACCESS的特征,

桌面型数据库 SQL SERVE MDB ACCESS

扩展 ActiveX 控件 标准SQL语言

远程管理 数据库开发软件 OLE DB 引擎 办公应用软件

跨库查询 “最终用户” Connection 可扩展性

远程管理

在本学期OFFICE课程中,我们认识了ACCESS数据库,ACCESS数据库是种怎样的数据库,以及它与其他数据库有何区别,我想用我找到的一些资料来说明一下。

通过学习我们发现ACCESS 是桌面型关系数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。ACCESS数据库有一定的极限,如果数据达到100M左右,很容易造成服务器假死,或者消耗掉服务器的内存导致服务器崩溃。这样我们需要想一想,既然ACCESS有一定的的限制,那另外的一些数据库又怎样呢?我们通过和其他数据库的比较来说明。

首先,我们先具体的来看一下ACCESS的特性,ACCESS是MICROSOFT OFFICE的一个组件,一个前后台结合的数据库“软件”。也就是说ACCESS既拥有用户界面(VB可以用来开发用户界面);也拥有逻辑、流程处理,即VBA语言(VB也可以用来做逻辑处理);又可以存储数据,即在“表”中存储数据。而所有这些都存储在一个 MDB 格式的文件中(当然,也可以是 MDE 等格式)。 ACCESS不是一种存储格式,是一种软件。请大家严格区分 ACCESS 软件与 MDB 格式。VB下调用 MDB 格式(或 JET DB)只是调用一种格式的文件而已,并没有调用到 ACCESS,其实官方说法叫 “VB 的 JET 应用”。另外, MDB 格式的文件也可以被其他开发工具,比如 DELPHI / PB / C / PHP / ASP / CGI / C# / J# / JAVA / VBNET / CNET 调用。但是被调用的只是 MDB 文件,很多 ACCESS 软件所具有的功能,这些开发工具是无法调用的。而这种格式只要系统中有 OLE DB 引擎就可以支持。

ACCESS 中的一些对象可以被 VB 调用,但是必须在调用的机器上安装 ACCESS 这个软件(COPY一个MDB文件是不够的)或者安装额外的 ACTIVEX 控件

MDB 是一种文件格式,其中的数据以特定方式组织起来,而 ACCESS 这种软件的默认存储格式正好是 MDB ACCESS 这个软件本身就具有开发者使用的界面和适合于“最终用户”的界面,也就是我们通常说的前后台结合。

然后我们看一下ACCESS与其它数据库的区别,在这里我们着重来看ACCESS与SQL SERVER的区别:

首先,ACCESS有一定的极限,如果数据达到100M左右,很容易造成服务器假死,或者消耗掉服务器的内存导致服务器崩溃。 而SQL SERVER是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比ACCESS要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL SERVER还有更多的扩展,可以用存储过程,数据库大小无极限限制。

其次ACCESS是桌面型数据库,优点是: *** 作灵活、转移方便、运行环境简单,对于小型网站的数据库处理能力效果还不错。缺点是:不支持并发处理、数据库易被下载存在安全隐患、数据存储量相对较小、数据量过大时严重影响网站访问速度和程序处理速度。SQL SERVER是基于服务器端的企业级数据库,适合大容量数据和大流量网站的应用,在性能、安全、功能管理、可扩展性上要比ACCESS强很多,两者并非同级别的数据库,有些功能ACCESS甚至无法做到。缺点是:一般用户无法直接对SQL SERVER进行远程管理、空间租用的成本比ACCESS稍高。

再次,就规模来说,VFP是一个中型数据库开发软件,比不上ORICAL、INFOMATION、POWERBUILDER等,是微软购并FOX公司后开发的一个数据库开发软件。可用于中型数据库软件工程的建构。可以用来做商业开发ACCESS严格来说不是一个数据库应用程序的开发工具,基本上是一个办公应用软件;不能用于商业用途的开发。只能在OFFICE环境下运行,受OFFICE本身的限制。所用语言只是基于VB语言的辅助性编程的VBA。就其规模来说属于小型的数据库应用软件。早年曾有过ACCESS20(英文版)的可以用于商业用途的数据库开发软件。但后来不知道为什么没有继续研发出新的ACCESS版本。 两者可拓展型相比,ACCESS好些,可使用的编程语言较多。ACCESS是 MICROSOFT OFFICE 的一个组件,一个前后台结合的数据库“软件”。 也就是说ACCESS既拥有用户界面(VB可以用来开发用户界面);也拥有逻辑、流程处理,即VBA语言(VB也可以用来做逻辑处理);又可以存储数据,即在“表”中存储数据。而所有这些都存储在一个 MDB 格式的文件中(当然,也可以是 MDE 等格式)。

总之,每一种数据库都有它们各自的优势和缺点,作为计算机系专业的学生,我们有必要掌握它们各自的优缺点以便灵活的掌握各种数据库的应用,并在行业中取得优秀的成就。

SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了300MB,而实际上只占用了20MB空间,这样就会造成磁盘存储空间的浪费。可以通过数据库收缩技术对数据库中的每个文件进行收缩,删除已经分配但没有使用的页。从而节省服务器的存储的成本。

官方解释:收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。在文件末尾创建足够的可用空间后,可以取消对文件末尾的数据页的分配并将它们返回给文件系统。

收缩后的数据库不能小于数据库最初创建时指定的大小。 或是上一次使用文件大小更改 *** 作(如 DBCC SHRINKFILE)设置的显式大小。

比如:如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。

不能在备份数据库时收缩数据库。 反之,也不能在数据库执行收缩 *** 作时备份数据库。

介绍:收缩指定数据库中的数据文件大小。

语法格式:

参数说明:

介绍:收缩当前数据库的指定数据或日志文件的大小,或通过将数据从指定的文件移动到相同文件组中的其他文件来清空文件,以允许从数据库中删除该文件。文件大小可以收缩到比创建该文件时所指定的大小更小。这样会将最小文件大小重置为新值。

语法格式:

参数说明:

例如,如果创建一个10MB 的文件,然后在文件仍然为空的时候将文件收缩为2 MB,默认文件大小将设置为2 MB。这只适用于永远不会包含数据的空文件。

另附SqlServer常见问题解答

1)管理器不会主动刷新,需要手工刷新一下才能看到最新状态(性能方面的考虑)

2)很少情况下,恢复进程被挂起了。这个时候假设你要恢复并且回到可访问状态,要执行:

RESTORE database dbname with recovery

这使得恢复过程能完全结束。

3)如果你要不断恢复后面的日志文件,的确需要使数据库处于“正在还原状态”,

这通常是执行下面命令:

RESTORE database dbname with norecovery

原来SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高。我们可以通过DBCC MemoryStatus来查看内存状态。

SQL SERVER运行时会执行两种缓存:

1 数据缓存:执行个查询语句,SQL SERVER会将相关的数据页(SQL SERVER *** 作的数据都是以页为单位的)加载到内存中来, 下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。

2执行命令缓存:在执行存储过程,自定函数时,SQL SERVER需要先二进制编译再运行,编译后的结果也会缓存起来, 再次调用时就无需再次编译。

可以调用以下几个DBCC管理命令来清理这些缓存:

但是,这几个命令虽然会清除掉现有缓存,为新的缓存腾地方,但是Sql server并不会因此释放掉已经占用的内存。SQL SERVER并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整SQL SERVER可用的物理内存设置来强迫它释放内存。

解决SQLSERVER内存占用过高的方法:

1、清除所有缓存DBCC DROPLEANBUFFERS

2、调整SQLSERVER可使用的最大服务器内存。

在SQL管理器,右击实例名称

在属性实例属性里面找到内存选项

把最大内存改成合适的内存,确定后内存就会被强制释放,然后重启实例。再看看任务管理器,内存使用率就降下来啦。

1、查看连接对象

USE master

GO

--如果要指定数据库就把注释去掉

SELECT FROM sys[sysprocesses] WHERE [spid]>50 --AND DB_NAME([dbid])='gposdb'

当前连接对象有67个其中‘WINAME’的主机名,‘jTDS’的进程名不属于已知常用软件,找到这台主机并解决连接问题。在360流量防火墙中查看有哪个软件连接了服务器IP,除之。

2、然后使用下面语句看一下各项指标是否正常,是否有阻塞,正常情况下搜索结果应该为空。

SELECT TOP 10

[session_id],

[request_id],

[start_time] AS '开始时间',

[status] AS '状态',

[command] AS '命令',

dest[text] AS 'sql语句',

DB_NAME([database_id]) AS '数据库名',

[blocking_session_id] AS '正在阻塞其他会话的会话ID',

[wait_type] AS '等待资源类型',

[wait_time] AS '等待时间',

[wait_resource] AS '等待的资源',

[reads] AS '物理读次数',

[writes] AS '写次数',

[logical_reads] AS '逻辑读次数',

[row_count] AS '返回结果行数'

FROM sys[dm_exec_requests] AS der

CROSS APPLY

sys[dm_exec_sql_text](der[sql_handle]) AS dest

WHERE [session_id]>50 AND DB_NAME(der[database_id])='gposdb'

ORDER BY [cpu_time] DESC

查看是哪些SQL语句占用较大可以使用下面代码

--在SSMS里选择以文本格式显示结果

SELECT TOP 10

dest[text] AS 'sql语句'

FROM sys[dm_exec_requests] AS der

CROSS APPLY

sys[dm_exec_sql_text](der[sql_handle]) AS dest

WHERE [session_id]>50

ORDER BY [cpu_time] DESC

3、如果SQLSERVER存在要等待的资源,那么执行下面语句就会显示出会话中有多少个worker在等待

SELECT TOP 10

[session_id],

[request_id],

[start_time] AS '开始时间',

[status] AS '状态',

[command] AS '命令',

dest[text] AS 'sql语句',

DB_NAME([database_id]) AS '数据库名',

[blocking_session_id] AS '正在阻塞其他会话的会话ID',

der[wait_type] AS '等待资源类型',

[wait_time] AS '等待时间',

[wait_resource] AS '等待的资源',

[dows][waiting_tasks_count] AS '当前正在进行等待的任务数',

[reads] AS '物理读次数',

[writes] AS '写次数',

[logical_reads] AS '逻辑读次数',

[row_count] AS '返回结果行数'

FROM sys[dm_exec_requests] AS der

INNER JOIN [sys][dm_os_wait_stats] AS dows

ON der[wait_type]=[dows][wait_type]

CROSS APPLY

sys[dm_exec_sql_text](der[sql_handle]) AS dest

WHERE [session_id]>50

ORDER BY [cpu_time] DESC;

4、查询CPU占用最高的SQL语句

SELECT TOP 10

total_worker_time/execution_count AS avg_cpu_cost, plan_handle,

execution_count,

(SELECT SUBSTRING(text, statement_start_offset/2 + 1,

(CASE WHEN statement_end_offset = -1

THEN LEN(CONVERT(nvarchar(max), text)) 2

ELSE statement_end_offset

END - statement_start_offset)/2)

FROM sysdm_exec_sql_text(sql_handle)) AS query_text

FROM sysdm_exec_query_stats

ORDER BY [avg_cpu_cost] DESC;

5、索引缺失查询

SELECT

DatabaseName = DB_NAME(database_id)

,[Number Indexes Missing] = count()

FROM sysdm_db_missing_index_details

GROUP BY DB_NAME(database_id)

ORDER BY 2 DESC;

SELECT TOP 10

[Total Cost] = ROUND(avg_total_user_cost avg_user_impact (user_seeks + user_scans),0)

, avg_user_impact

, TableName = statement

, [EqualityUsage] = equality_columns

, [InequalityUsage] = inequality_columns

, [Include Cloumns] = included_columns

FROM sysdm_db_missing_index_groups g

INNER JOIN sysdm_db_missing_index_group_stats s

ON sgroup_handle = gindex_group_handle

INNER JOIN sysdm_db_missing_index_details d

ON dindex_handle = gindex_handle

ORDER BY [Total Cost] DESC;

找到索引缺失的表,根据查询结果中的关键次逐一建立索引。

收缩数据库

数据库中的每个文件都可以通过删除未使用的页的方法来减小。尽管数据库引擎会有效地重新使用空间,但某个文件多次出现无需原来大小的情况后,收缩文件就变得很有必要了。数据和事务日志文件都可以减小(收缩)。可以成组或单独地手动收缩数据库文件,也可以设置数据库,使其按照指定的间隔自动收缩。

文件始终从末尾开始收缩。例如,如果有个5GB的文件,并且在DBCCSHRINKFILE语句中将target_size指定为4GB,则数据库引擎将从文件的最后一个1GB开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则数据库引擎先将这些页重新放置到文件的保留部分。只能将数据库收缩到没有剩余的可用空间为止。例如,如果某个5GB的数据库有4GB的数据,并且在DBCCSHRINKFILE语句中将target_size指定为3GB,则只能释放1GB。

自动数据库收缩

将AUTO_SHRINK数据库选项设置为ON后,数据库引擎将自动收缩具有可用空间的数据库。此选项可以使用ALTERDATABASE语句来进行设置。默认情况下,此选项设置为OFF。数据库引擎会定期检查每个数据库的空间使用情况。如果某个数据库的AUTO_SHRINK选项设置为ON,则数据库引擎将减少数据库中文件的大小。该活动在后台进行,并且不影响数据库内的用户活动。

将数据库设置为自动收缩

ALTERDATABASE(Transact-SQL)

手动数据库收缩

您可以使用DBCC语句或DBCCSHRINKFILE语句来手动收缩数据库或数据库中的文件。如果DBCC或DBCCSHRINKFILE语句无法回收日志文件中的所有指定空间,则该语句将发出信息性消息,指明必须执行什么 *** 作以便释放更多空间。有关收缩日志文件的详细信息,请参阅收缩事务日志。

在该过程中任意时间都可停止DBCC和DBCCSHRINKFILE *** 作,所有已完成工作都将保留。

在使用DBCC语句时,您无法将整个数据库收缩得比其初始大小更小。因此,如果数据库创建时的大小为10MB,后来增长到100MB,则该数据库最小只能收缩到10MB,即使已经删除数据库的所有数据也是如此。

但是,使用DBCCSHRINKFILE语句时,可以将各个数据库文件收缩得比其初始大小更小。必须对每个文件分别进行收缩,而不能尝试收缩整个数据库。

以上就是关于100M的MYSQL数据库可以存放多少东西全部的内容,包括:100M的MYSQL数据库可以存放多少东西、急求 Access 数据库系统简介、SQLServer数据库收缩相关知识等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/sjk/10201591.html

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

发表评论

登录后才能评论

评论列表(0条)

保存