linux 建表空间 linux软件仓库

linux怎么修改mysql数据库临时表空间大小

先来说说临时表的概念。临时表顾名思义,就是临时的,用完销毁掉的表。数据既可以保存在临时的文件系统上,也可以保存在固定的磁盘文件系统上。临时表有下面几种:

1全局临时表

这种临时表从数据库实例启动后开始生效,在数据库实例销毁后失效。在MySQL里面这种临时表对应的是内存表,即memory引擎。

2会话级别临时表

这种临时表在用户登录系统成功后生效,在用户退出时失效。在MySQL里的临时表指的就是以 create temporary table这样的关键词创建的表。

3事务级别临时表

这种临时表在事务开始时生效,事务提交或者回滚后失效。在MySQL里面没有这种临时表,必须利用会话级别的临时表间接实现。

4检索级别临时表

这种临时表在SQL语句执行之间产生,执行完毕后失效。在MySQL里面这种临时表不是很固定,跟随MySQL默认存储引擎来变化。比如默认存储引擎是MyISAM,临时表的引擎就是MyISAM,并且文件生成形式以及数据运作形式和MyISAM一样,只是数据保存在内存里;如果默认引擎是INNODB,那么临时表的引擎就是INNODB,此时它的所有信息都保存在共享表空间ibdata里面。

MySQL 5.7对于InnoDB存储引擎的临时表空间做了优化。在MySQL 5.7之前,INNODB引擎的临时表都保存在ibdata里面,而ibdata的贪婪式磁盘占用导致临时表的创建与删除对其他正常表产生非常大的性能影响。在MySQL5.7中,对于临时表做了下面两个重要方面的优化:

MySQL5.7把临时表的数据以及回滚信息(仅限于未压缩表)从共享表空间里面剥离出来,形成自己单独的表空间,参数为innodb_temp_data_file_path。

在MySQL5.7中把临时表的相关检索信息保存在系统信息表中:information_schema.innodb_temp_table_info.而MySQL 5.7之前的版本想要查看临时表的系统信息是没有太好的办法。

需要注意的一点就是,虽然INNODB临时表有自己的表空间,但是目前还不能自己定义临时表空间文件的保存路径,只能是继承innodb_data_home_dir。此时如果想要拿其他的磁盘,比如内存盘来充当临时表空间的保存地址,只能用老办法,做软链。举个小例子:

我现在用的OS是 Ubuntu12.X,想用tmpfs文件系统充当临时表空间,

root@ytt-master-VirtualBox:/usr/local/mysql/data#ln-s/run/shm//usr/local/mysql/data/tmp_space2

root@ytt-master-VirtualBox:/usr/local/mysql/data#ls-l| grep'shm'

lrwxrwxrwx1 root root 9 Nov 13 10:28tmp_space2->/run/shm/

然后把

innodb_temp_data_file_path=tmp_space2/ibtmp2:200M:autoextend

添加到my.cnf里的[mysqld]下面一行

重启MySQL服务后,

mysql>select@@innodb_temp_data_file_path\G

***************************1. row***************************

@@innodb_temp_data_file_path:tmp_space2/ibtmp2:200M:autoextend

1 rowin set(0.00 sec)

先写一个批量创建临时表的存储过程:

DELIMITER$$

USE`t_girl`$$

DROPPROCEDURE IF EXISTS `sp_create_temporary_table`$$

CREATEDEFINER=`root`@`localhost` PROCEDURE `sp_create_temporary_table`(

IN f_cnt INT UNSIGNED)

BEGIN

DECLARE i INT UNSIGNED DEFAULT 1;

WHILE i<= f_cnt

DO

SET@stmt= CONCAT('create temporarytable tmp',i,'( id int, tmp_desc varchar(60));');

PREPARE s1 FROM@stmt;

EXECUTE s1;

SET i= i+ 1;

END WHILE;

DROP PREPARE s1;

END$$

DELIMITER;

现在来创建10张临时表:

mysql>call sp_create_temporary_table(10);

QueryOK, 0 rows affected(0.07 sec)

如果在以前,我们只知道创建了10张临时表,但是只能凭记忆或者手工记录下来临时表的名字等信息。

现在可以直接从数据字典里面检索相关数据。

mysql>select* frominformation_schema.innodb_temp_table_info;

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

|TABLE_ID| NAME| N_COLS| SPACE| PER_TABLE_TABLESPACE| IS_COMPRESSED|

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

| 56|#sql1705_2_9| 5| 36| FALSE| FALSE|

| 55|#sql1705_2_8| 5| 36| FALSE|FALSE|

| 54|#sql1705_2_7| 5| 36| FALSE| FALSE|

| 53|#sql1705_2_6| 5| 36| FALSE| FALSE|

| 52|#sql1705_2_5| 5| 36| FALSE|FALSE|

| 51|#sql1705_2_4| 5| 36| FALSE| FALSE|

| 50|#sql1705_2_3| 5| 36| FALSE| FALSE|

| 49|#sql1705_2_2| 5| 36| FALSE|FALSE|

| 48|#sql1705_2_1| 5| 36| FALSE| FALSE|

| 47|#sql1705_2_0| 5| 36| FALSE| FALSE|

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

10rows in set(0.00 sec)

功能性我就写到这里,大家性能方面如果有兴趣可以找时间去测试。

linux创建表空间linux建表空间

如何用LINUX用命令创建ORACLE数据库表空间和用户?

1、使用超级用户登录sqlplus。

2、创建表空间:SQL>createtablespacetest2datafile'D:oracleoradatatesttest.dbf'3size100Mautoextendonnext10Mmaxsizeunlimitedextentmanagementlocal;

3、创建用户和密码:SQL>createuserUsernameidentifiedbyPassworddefaulttable2usersTemporaryTABLESPACETemp;

4、用户受权限:SQL>grantconnect,resource,dbatoUsername;

5、提交:SQL>commit;

linux系统要多少gb?

一般6-10G,建议20G以上。由于Linux的内核的来源是一样的,但由于发行版本不同,具体需要磁盘大小看具体系统需求。

Linux内核比较小,安装系统其实用不了多大的磁盘空间,不像MAXOS和windows。为了获得完整的用户体验,建议磁盘空间保证在20G以上,如果需要安装很多软件和服务,那么自然就要扩大磁盘容量了。

当然也可以在系统装好之后扩充磁盘容量,但为了避免麻烦和数据损失,建议在安装时多分一点儿空间。

linux内核一般占用多大内存?

64位系统的地址空间不是2^32,也不是2^64,而一般是2^48。因为并不需要2^64那么大的寻址空间,过大的空间只会导致资源的浪费。64位linux一般使用48位来表示虚拟地址空间,使用40位来表示物理地址空间,可以通过cat/proc/cpuinfo来查看

其中,0x0000000000000000~0x00007fffffffffff表示用户空间,0xFFFF800000000000~0xFFFFFFFFFFFFFFFF表示内核空间,共提供256TB(2^48)的寻址空间。

这两个区间的特点是,第47位与48~63位相同,若这些位为0表示用户空间,否则表示内核空间。

linux要多大的空间安装?

一般6-10G,建议20G以上。r由于Linux的内核的来源是一样的,但由于发行版本不同,具体需要磁盘大小看具体系统需求。rLinux内核比较小,安装系统其实用不了多大的磁盘空间,不像MAXOS和windows。为了获得完整的用户体验,建议磁盘空间保证在20G以上,如果需要安装很多软件和服务,那么自然就要扩大磁盘容量了。当然也可以在系统装好之后扩充磁盘容量,但为了避免麻烦和数据损失,建议在安装时多分一点儿空间。

如何清理Linux服务器磁盘空间?

1、删除无用的安装包

在之前的Linux实验室中,笔者介绍过apt-get及其相似命令,而在apt-get命令中,有一项“autoremove”自动移除选项。

这个选项能够移除一些无用的自动安装包和库,也可以删除那些在系统升级中自动安装的就得Linux内核。

这是一个傻瓜式的命令,你随时都可以运行,以加大你的磁盘可用空间。

sudoapt-getautoremove

如你所见,这个命令能够释放我电脑中的300MB空间。

2、清空系统中的APT缓存

APT的全称是AdvancedPackageTool,即高级软件包工具,他是一个成熟的软件包管理系统。Ubuntu使用APT在系统上进行软件的安装、管理和卸载,而在进行这些操作之后,APT会保留以前下载和安装过的软件包缓存。

APT会将DEB软件包缓存保存在/var/cache/apt/archives中,而随着时间的推移,这个缓存会变得越来越大,其中也会包含大量不需要的软件安装包。你可以通过一下这个命令来查看你的缓存大小:

sudodu-sh/var/cache/apt

正如你所见,APT在这个系统中一共有581MB的空间占用。当你已经没有空间可用时,500MB已经是一个非常有意义的空间了。

接下来你就有两种方法来清理这些缓存了,前一种由系统自动判断清除,而后一个命令行能够清空更大的空间。

sudoapt-getautocleansudoapt-getclean

2清缓存、卸软件、GUI辅助

3、清理thumbnail缓存

对于Linux为内核的大多数系统中(包括安卓),都会有thumbnail,可以直译为“缩略图”,也就是说Ubuntu会自动创建一个缩略图版本,并存储在文件管理器中。一般来讲,这种缩略图存储在一个隐藏目录中,位于~/.cache/thumbnails。

当然,随着时间推移,缩略图的数量也将大大增加,里面的文件也会越来越大,如果要了解你的thumbnail的大小可以用这个命令来查看,可以看到该系统目前有380MB的缓存。

du-sh~/.cache/thumbnails

然后你就可以在任何时间清理你的缓存了,最快速的方法就是终端上使用清理命令:

rm-rf~/.cache/thumbnails/*

4、卸载不常用的软件

总有些软件我们一心潮澎湃就下载了,然而下载后半年都不用一次,对于这些极其占用电脑资源,有没有什么实际意义的软件,最好的办法就是卸载了吧。

如果你需要卸载这些使用频率很低的软件,并且知道这个软件的名字的话,可以使用下面的命令进行卸载。

sudoapt-getremovepackage-name1package-name2

5、通过GUI清理Ubuntu空间

以上几种方法可以说都是用命令行的方式去清理磁盘空间的,可能有些人并不习惯这么做,毕竟你需要记住所有命令,在一个接一个的使用它们,所以这里给大家推荐一种通过GUI来清理内存空间的方法。

比如Stacer就是这样一个工具,它可以展示你系统中的内存、CPU等各种部件状态信息,当然还有很多其他类似的工具,等着你不断去发掘。

教程Linux操作系统下如何创建表空间linux下创建表空间

在Linux系统下创建表空间是一项重要的数据库管理活动,它可以帮助我们更好地更有效地管理数据库。在Linux操作系统下,我们可以通过使用一些命令来创建表空间,以便更好地管理数据库。下面我们介绍如何在Linux操作系统下创建表空间:

首先,打开终端,使用以下命令创建一个用于存储数据的目录:

mkdir/tablespaces

然后执行给出的下列SQL语句来创建表空间:

CREATE TABLESPACE tablespace_name

DATAFILE‘/tablespaces/tablespace_name.dbf’

SIZE 512m

EXTENT MANAGEMENT LOCAL

SEGMENT SPACE MANAGEMENT AUTO;

接下来,使用下面的命令来确认新创建的表空间:

SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024 AS SIZE_MB

FROM DBA_DATA_FILES

WHERE TABLESPACE_NAME=’tablespace_name’;

最后,为了确保表空间的有效性,请使用以下命令来进行检查:

SELECT TABLESPACE_NAME, STATUS

FROM DBA_TABLESPACES

WHERE TABLESPACE_NAME=’tablespace_name’;

以上就是在Linux操作系统下创建表空间的简易教程。通过熟练掌握这些步骤,我们可以更好地管理数据库。在此过程中,也要注意使用给定的正确的SQL语句,以便创建更复杂的表空间。

阅读剩余
THE END