
其实只要使用系统内置的存储过程sp_spaceused就可以得到表的相关信息
如:sp_spaceused 'tablename'
以下是为了方便写的一个存储过程,目的是把当前的所有表的相关信息全部都保存在一个指定的表里面
CREATE PROCEDURE get_tableinfo AS
if not exists (select from dbosysobjects where id = object_id(N'[dbo][tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo --创建结果存储表
(nameinfo varchar(50) ,
rowsinfo int , reserved varchar(20) ,
datainfo varchar(20) ,
index_size varchar(20) ,
unused varchar(20) )
delete from tablespaceinfo --清空数据表
declare @tablename varchar(255) --表名称
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR
select oname
from dbosysobjects o where OBJECTPROPERTY(oid, N'IsTable') = 1
and oname not like N'#%%' order by oname
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select from dbosysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',
N'@tbname varchar(255)',
@tbname = @tablename
FETCH NEXT FROM Info_cursor
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO
执行存储过程
exec get_tableinfo
查询运行该存储过程后得到的结果
select
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
android中清除缓存时数据库不会被删除。因为缓存只是应用程序留在手机存储上的临时文件,而数据库是手机正式保存下来的文件。
android清除缓存的工作原理如图:
我们都知道MySQL的TableCache是表定义的缓存,江湖上流传着各种对这个参数的调优方法。
tablecache的作用,就是节约读取表结构文件的开销。对于tablecache是否命中,其实tablecache是针对于线程的,每个线程有自己的缓存,只缓存本线程的表结构定义。不过我们发现,strace中没有关于表结构文件的open *** 作(只有stat *** 作,定位表结构文件是否存在),也就是说tablecache不命中,不一定需要读取表结构文件。这种感觉好像是:在不命中tablecache时,命中了另外一个表结构缓存。
运维建议:
我们读一下MySQL的文档,关于table_open_cache的建议值公式:建议值=最大并发数join语句涉及的表的最大个数。
通过实验我们容易理解:table_cache是针对于线程的,所以需要最大并发数个缓存。另外,一个语句join涉及的表,需要同时在缓存中存在。所以最小的缓存大小,等于语句join涉及的表的最大个数。将这两个数相乘,就得到了MySQL的建议值公式。
清除数据、清除缓存、一键清理的区别清除数据 清除数据主要是清除用户配置,比如SharedPreferences、数据库等等,这些数据都是在程序运行过程中保存的用户配置信息,清除数据后,下次进入程序就和第一次进入程序时一样;清除缓存 缓存是程序运行时的临时存储空间,它可以存放从网络下载的临时,从用户的角度出发清除缓存对用户并没有太大的影响,但是清除缓存后用户再次使用该APP时,由于本地缓存已经被清理,所有的数据需要重新从网络上获取。一键清理 一键清理是系统级别的功能,它主要是杀后台进程,以达到释放内存的目的。
以上就是关于sql怎么获得数据库缓存空间大小全部的内容,包括:sql怎么获得数据库缓存空间大小、android中清除缓存时数据库会被删除吗、数据库缓存机制是什么缓存是如何作用数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)