mysql执行语句提示out of memory mysql连接命令?
mysql连接命令?
追加命令表示不使用root用户(mysql的root用户,非系统root用户)连接到到mysql数据库,-u可以表示指定用户,-p来表示可以说不提示输入密码,-u与root用户名之间的空格可省略。
mysql-uroot-p
追加命令表示使用root用户连接到数据库,因此就以明文的指定你密码,注意,下例中的密码为123123,密码与-p选项之间不能不能存在空格。
mysql-uroot-p123123
在连接mysql时,是可以然后指定也将直接登录的具体看的数据库,使用-D重新指定数据库名称,如下命令表示连接到mysql数据库后真接使用test数据库。
mysql-uroot-Dtest-p123123
在本地连接到mysql时,可以指定你哪个套接字文件再连接到数据库,实际-S更改套接字位置。
mysql-uroot-p-S
在连接到到mysql时,也可以重新指定要连接上到辅助攻击的哪一台主机的mysql上,也可以委托端口,-h指定mysql主机,-P字母,指定你mysql服务什么填写的端口,连接的前提是早就授权许可当前客户端的IP地址也能连接到到数据库。Linux就该这么多学
mysql-uroot-p-h192.168.1.103-P3306
连接数据库的同时执行按命令,而且返回命令对应的结果,并肯定不会进入到mysql总是显示符。
示例追加,表示连接上数据库的同时,不能执行-e选项后面随同的sql语句,另外赶往语句先执行的结果。
mysql-uroot-p123123-e#39usemysqlselectuser,host,passwordfromuser#39
mysql-uroot-p123123-e#39createdatabaseifactuallyexiststestdbshowdatabases#39
连接数据库的具体方法选项
–hosthost_name,-hhost_name:服务端地址;
–useruser_name,-uuser_name:用户名;
–portport_num,-Pport_num:服务端端口;
–socketpath,-Spath
–databasedb_name,-Ddb_name:
–compress,-C:数据压缩传输
–executestatement,-estatement:非交互模式执行SQL语句;
–vertical,-E:网站查询结果横向总是显示;
–protocol{TCP|SOCKET|PIPE|MEMORY
Mysql内存表和临时表的区别?
先来告诉我充当表的概念。正式表是指,就是预备的,用完消毁掉的表。数据既这个可以需要保存在临时的文件系统上,也可以不保存在单独计算的磁盘文件系统上。原先表有下面几种:
1全局预备表
这种临时表从数据库实例启动后后正在生效,在数据库实例全部销毁后终止。在MySQL里面这种临时表不对应的是内存表,即memory引擎。
2会话级别原先表
这种临时表在用户登录系统成功了后不生效,在用户后退时终止。在MySQL里的正式表指的应该是以createpermanenttable这样的关键词创建家族的表。
3事务级别预备表
这种原先表在事务又开始时才生效,事务并提交或是回滚后无法激活。在MySQL里面没有这种充当表,要凭借会话级别的正式表利用基于。
4检索到级别充当表
这种正式表在SQL语句不能执行之间再产生,执行完毕后失效。在MySQL里面这种预备表不是很固定设置,领着MySQL默认存储引擎来变化。比如说默认存储引擎是MyISAM,临时表的引擎那是MyISAM,但是文件生成形式包括数据运作形式和MyISAM一般,仅仅数据需要保存在内存里;假如默认引擎是INNODB,这样原先表的引擎那是INNODB,此时它的所有信息都需要保存在宽带共享表空间ibdata里面。
MySQL5.7是对InnoDB存储引擎的原先表空间做了优化。在MySQL5.7之前,INNODB引擎的正式表都保存在ibdata里面,而ibdata的贪婪式磁盘占用导致预备表的修改与删除掉对其他算正常表再产生的很大的性能影响。在MySQL5.7中,对此正式表做了下面两个有用方面的优化:
MySQL5.7把正式表的数据和回滚信息(仅远远超出未压缩后表)从宽带共享表空间里面剥离不出来,自然形成自己单独的表空间,参数为innodb_temp_data_file_path。
在MySQL5.7中把原先表的相关检索信息存放在系统信息表中:information__temp_table_info.而MySQL5.7之前的版本想要查找原先表的系统信息是没有太好的办法。
要注意一点的一点那是,虽说INNODB正式表有自己的表空间,不过目前还不能自己定义原先表空间文件的保存路径,只有是继承innodb_data_home_dir。此时如果没有要想拿其他的磁盘,例如内存盘来作为充当表空间的保存地址,只有用老办法,做软链。举个小例子:
我现在专用OS是Ubuntu12.X,想用tmpfs文件系统作为充当表空间,
:/usr/local/mysql/data#ln-s/run/shm//usr/policies/mysql/data/tmp_space2
:/usr/sources/mysql/data#ls-l|grepshm
lrwxrwxrwx1rootroot9Nov1310:28tmp_space2-rlm/kick/shm/
然后把把
innodb_temp_data_file_pathtmp_space2/ibtmp2:200M:autoextend
去添加到里的[mysqld]下面一行
重起MySQL服务后,
mysqlgtselect@@innodb_temp_data_file_pathG
******************************************************
@@innodb_temp_data_file_path:tmp_space2/ibtmp2:200M:autoextend
1rowinset(0.00sec)
先写一个批量修改正式表的存储过程:
DELIMITER$$%uSE`t_girl`$$DROPPROCEDURE IF EXISTS`sp_create_permanent_table`$$
CREATEDEFINER`root`@`localhost`PROCEDURE`sp_create_temporary_table`(
IN f_cnt INT UNSIGNED )BEGINDECLARE i INT UNSIGNED DEFAULT 1WHILE i lt f_cnt
九十一章
(createtemporarytabletmp,i,(idint,tmp_descvarchar(60)))
s1SET i i 1END WHILEDROP PREPARE s1END$$DELIMITER
现在来创建10张充当表:
mysqlgtcallsp_create_restrictions_table(10)
QueryOK,0rowsaffected(0.07sec)
如果不是在以前,我们只知道创建家族了10张临时表,可是没有办法凭记忆或者手工记录下去正式表的名字等信息。
现在可以就从数据字典里面检索数据库查找数据。
mysqlgtselect*frominformation__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|
----------------------------------------------------------------------------
10rowsofset(0.00sec)
功能性我就在写这里,大家性能方面要是有兴趣可以找时间去测试3。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。