mysql執(zhí)行語(yǔ)句提示out of memory mysql連接命令?
mysql連接命令?追加命令表示不使用root用戶(mysql的root用戶,非系統(tǒng)root用戶)連接到到mysql數(shù)據(jù)庫(kù),-u可以表示指定用戶,-p來(lái)表示可以說(shuō)不提示輸入密碼,-u與root用戶名之
mysql連接命令?
追加命令表示不使用root用戶(mysql的root用戶,非系統(tǒng)root用戶)連接到到mysql數(shù)據(jù)庫(kù),-u可以表示指定用戶,-p來(lái)表示可以說(shuō)不提示輸入密碼,-u與root用戶名之間的空格可省略。
mysql-uroot-p
追加命令表示使用root用戶連接到數(shù)據(jù)庫(kù),因此就以明文的指定你密碼,注意,下例中的密碼為123123,密碼與-p選項(xiàng)之間不能不能存在空格。
mysql-uroot-p123123
在連接mysql時(shí),是可以然后指定也將直接登錄的具體看的數(shù)據(jù)庫(kù),使用-D重新指定數(shù)據(jù)庫(kù)名稱,如下命令表示連接到mysql數(shù)據(jù)庫(kù)后真接使用test數(shù)據(jù)庫(kù)。
mysql-uroot-Dtest-p123123
在本地連接到mysql時(shí),可以指定你哪個(gè)套接字文件再連接到數(shù)據(jù)庫(kù),實(shí)際-S更改套接字位置。
mysql-uroot-p-S
在連接到到mysql時(shí),也可以重新指定要連接上到輔助攻擊的哪一臺(tái)主機(jī)的mysql上,也可以委托端口,-h指定mysql主機(jī),-P字母,指定你mysql服務(wù)什么填寫的端口,連接的前提是早就授權(quán)許可當(dāng)前客戶端的IP地址也能連接到到數(shù)據(jù)庫(kù)。Linux就該這么多學(xué)
mysql-uroot-p-h192.168.1.103-P3306
連接數(shù)據(jù)庫(kù)的同時(shí)執(zhí)行按命令,而且返回命令對(duì)應(yīng)的結(jié)果,并肯定不會(huì)進(jìn)入到mysql總是顯示符。
示例追加,表示連接上數(shù)據(jù)庫(kù)的同時(shí),不能執(zhí)行-e選項(xiàng)后面隨同的sql語(yǔ)句,另外趕往語(yǔ)句先執(zhí)行的結(jié)果。
mysql-uroot-p123123-e#39usemysqlselectuser,host,passwordfromuser#39
mysql-uroot-p123123-e#39createdatabaseifactuallyexiststestdbshowdatabases#39
連接數(shù)據(jù)庫(kù)的具體方法選項(xiàng)
–hosthost_name,-hhost_name:服務(wù)端地址;
–useruser_name,-uuser_name:用戶名;
–portport_num,-Pport_num:服務(wù)端端口;
–socketpath,-Spath
–databasedb_name,-Ddb_name:
–compress,-C:數(shù)據(jù)壓縮傳輸
–executestatement,-estatement:非交互模式執(zhí)行SQL語(yǔ)句;
–vertical,-E:網(wǎng)站查詢結(jié)果橫向總是顯示;
–protocol{TCP|SOCKET|PIPE|MEMORY
Mysql內(nèi)存表和臨時(shí)表的區(qū)別?
先來(lái)告訴我充當(dāng)表的概念。正式表是指,就是預(yù)備的,用完消毀掉的表。數(shù)據(jù)既這個(gè)可以需要保存在臨時(shí)的文件系統(tǒng)上,也可以不保存在單獨(dú)計(jì)算的磁盤文件系統(tǒng)上。原先表有下面幾種:
1全局預(yù)備表
這種臨時(shí)表從數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)后后正在生效,在數(shù)據(jù)庫(kù)實(shí)例全部銷毀后終止。在MySQL里面這種臨時(shí)表不對(duì)應(yīng)的是內(nèi)存表,即memory引擎。
2會(huì)話級(jí)別原先表
這種臨時(shí)表在用戶登錄系統(tǒng)成功了后不生效,在用戶后退時(shí)終止。在MySQL里的正式表指的應(yīng)該是以createpermanenttable這樣的關(guān)鍵詞創(chuàng)建家族的表。
3事務(wù)級(jí)別預(yù)備表
這種原先表在事務(wù)又開始時(shí)才生效,事務(wù)并提交或是回滾后無(wú)法激活。在MySQL里面沒(méi)有這種充當(dāng)表,要憑借會(huì)話級(jí)別的正式表利用基于。
4檢索到級(jí)別充當(dāng)表
這種正式表在SQL語(yǔ)句不能執(zhí)行之間再產(chǎn)生,執(zhí)行完畢后失效。在MySQL里面這種預(yù)備表不是很固定設(shè)置,領(lǐng)著MySQL默認(rèn)存儲(chǔ)引擎來(lái)變化。比如說(shuō)默認(rèn)存儲(chǔ)引擎是MyISAM,臨時(shí)表的引擎那是MyISAM,但是文件生成形式包括數(shù)據(jù)運(yùn)作形式和MyISAM一般,僅僅數(shù)據(jù)需要保存在內(nèi)存里;假如默認(rèn)引擎是INNODB,這樣原先表的引擎那是INNODB,此時(shí)它的所有信息都需要保存在寬帶共享表空間ibdata里面。
MySQL5.7是對(duì)InnoDB存儲(chǔ)引擎的原先表空間做了優(yōu)化。在MySQL5.7之前,INNODB引擎的正式表都保存在ibdata里面,而ibdata的貪婪式磁盤占用導(dǎo)致預(yù)備表的修改與刪除掉對(duì)其他算正常表再產(chǎn)生的很大的性能影響。在MySQL5.7中,對(duì)此正式表做了下面兩個(gè)有用方面的優(yōu)化:
MySQL5.7把正式表的數(shù)據(jù)和回滾信息(僅遠(yuǎn)遠(yuǎn)超出未壓縮后表)從寬帶共享表空間里面剝離不出來(lái),自然形成自己?jiǎn)为?dú)的表空間,參數(shù)為innodb_temp_data_file_path。
在MySQL5.7中把原先表的相關(guān)檢索信息存放在系統(tǒng)信息表中:information__temp_table_info.而MySQL5.7之前的版本想要查找原先表的系統(tǒng)信息是沒(méi)有太好的辦法。
要注意一點(diǎn)的一點(diǎn)那是,雖說(shuō)INNODB正式表有自己的表空間,不過(guò)目前還不能自己定義原先表空間文件的保存路徑,只有是繼承innodb_data_home_dir。此時(shí)如果沒(méi)有要想拿其他的磁盤,例如內(nèi)存盤來(lái)作為充當(dāng)表空間的保存地址,只有用老辦法,做軟鏈。舉個(gè)小例子:
我現(xiàn)在專用OS是Ubuntu12.X,想用tmpfs文件系統(tǒng)作為充當(dāng)表空間,
:/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服務(wù)后,
mysqlgtselect@@innodb_temp_data_file_pathG
******************************************************
@@innodb_temp_data_file_path:tmp_space2/ibtmp2:200M:autoextend
1rowinset(0.00sec)
先寫一個(gè)批量修改正式表的存儲(chǔ)過(guò)程:
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
現(xiàn)在來(lái)創(chuàng)建10張充當(dāng)表:
mysqlgtcallsp_create_restrictions_table(10)
QueryOK,0rowsaffected(0.07sec)
如果不是在以前,我們只知道創(chuàng)建家族了10張臨時(shí)表,可是沒(méi)有辦法憑記憶或者手工記錄下去正式表的名字等信息。
現(xiàn)在可以就從數(shù)據(jù)字典里面檢索數(shù)據(jù)庫(kù)查找數(shù)據(jù)。
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)
功能性我就在寫這里,大家性能方面要是有興趣可以找時(shí)間去測(cè)試3。