瑙e喅mysql鐨勫唴瀛樿〃鈥渢able is full鈥濋敊璇?
101209 13:13:32 [ERROR] /usr/local/mysql/bin/mysqld: The table 鈥榯est_1291870945841162鈥?is full 101209 13:13:32 [ERROR] /usr/local/mysql/bin/mysqld: The table 鈥榯est_1291870945841162鈥?is full 101209 13:13:32 [ERROR] /usr/local/mysql/bin/mysqld: The table 鈥榯est_1291870945841162鈥?is full 101209 13:13:32 [ERROR] /usr/local/mysql/bin/mysqld: The table 鈥榯est_1291870945841162鈥?is full
鏈夎繖涓€鍙ヨ瘽寰堥噸瑕侊細 You are using the MEMORY (HEAP) storage engine; in this case you need to increase the value of the max_heap_table_size system variable. See Section 5.1.3, 鈥淪erver System Variables鈥?
浜庢槸灏变慨鏀筂ysql鐨勯厤缃枃浠?etc/my.cnf锛屽湪[mysqld]涓嬫坊鍔?淇敼涓よ锛? tmp_table_size = 256M max_heap_table_size = 256M
绯荤粺榛樿鏄?6M锛屽埆蹇樿閲嶆柊鍚姩mysql锛屼綘涔熷彲浠ュ湪绾垮姩鎬佷慨鏀硅鍙傛暟锛岀粡杩囪繖鍑犲ぉ鐨勮瀵燂紝杩欎釜涓栫晫瀹夐潤浜嗚澶氥€?
閫氳繃淇敼 memory table MAX_ROWS 涔熷彲浠ャ€? ------------------------------------------- 锛坢emory锛塇EAP琛ㄦ槸璁块棶鏁版嵁閫熷害鏈€蹇殑MySQL琛紝浠栦娇鐢ㄤ繚瀛樺湪鍐呭瓨涓殑鏁e垪绱㈠紩銆備絾濡傛灉MySQL鎴栬€呮湇鍔″櫒閲嶆柊鍚姩锛岃〃涓暟鎹皢浼氫涪澶? 鐢ㄦ硶锛氬璁哄潧鐨勫湪绾夸汉鏁扮粺璁★紝杩欑琛ㄧ殑鏁版嵁搴旇鏄棤鍏崇揣瑕佺殑,灏卞嚑涓畝鍗曠殑瀛楁,鏁版嵁涔熶笉澶?璁板綍鏁版€庝箞涔熶笉浼氳秴杩?000鍚?浣嗘槸鎿嶄綔鏄渶棰戠箒鐨?鍩烘湰鐢ㄦ埛鐨勬瘡娆″姩浣滈兘瑕佹洿鏂拌繖涓〃).
鍒涘缓鍐呭瓨琛ㄩ潪甯哥殑绠€鍗曪紝鍙渶娉ㄦ槑 ENGINE= MEMORY 鍗冲彲: (none)@betbrain > show create table betbrain.t_zq_odds_change_152_2\G; *************************** 1. row *************************** Table: t_zq_odds_change_152_2 Create Table: CREATE TABLE `t_zq_odds_change_152_2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bettingofferid` bigint(20) NOT NULL, `bettingtypeid` int(11) NOT NULL, `eventid` bigint(20) NOT NULL DEFAULT '0', `outcomeid` bigint(20) NOT NULL, `providerid` int(11) NOT NULL, `odds` float(9,3) NOT NULL, `status` tinyint(4) NOT NULL DEFAULT '0', `lastchangedtime` datetime NOT NULL, `lastchangedtime_ms` bigint(20) DEFAULT '0', `addtime` datetime DEFAULT NULL, `updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `bettingstatusid` tinyint(4) NOT NULL DEFAULT '0', `addtime_500` datetime DEFAULT NULL COMMENT '鏀跺埌鏁版嵁鐨勬椂闂?, `send_data_start_time_hk` datetime DEFAULT NULL COMMENT '鏁版嵁鏂囦欢寮€濮嬪線鍐呭湴鏈嶅姟鍣ㄤ紶杈撶殑鏃堕棿鐐?, `request_start_time_hk` datetime DEFAULT NULL COMMENT '涓浆鏈嶅姟鍣ㄨ姹傛暟鎹殑鏃堕棿鐐?, `addtime_hk` datetime DEFAULT NULL COMMENT '棣欐腐鏈嶅姟鍣ㄦ敹鍒版暟鎹殑鏃堕棿鐐?, `addtime_betbrain` datetime DEFAULT NULL COMMENT 'Betbrain鏇存柊鏁版嵁鐨勬椂闂寸偣', `file_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '鏁版嵁鏂囦欢id', `slotnum` int(11) NOT NULL DEFAULT '0', `islive` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `outcomeid` (`outcomeid`) USING BTREE, KEY `updatetime` (`updatetime`) USING BTREE, KEY `eventid` (`eventid`), KEY `status` (`status`) )ENGINE=MEMORY AUTO_INCREMENT=3761409 DEFAULT CHARSET=gbk MAX_ROWS=10000000 1 row in set (0.00 sec)
娉ㄦ剰锛? 褰撳唴瀛樿〃涓殑鏁版嵁澶т簬max_heap_table_size璁惧畾鐨勫閲忓ぇ灏忔椂锛宮ysql浼氳浆鎹㈣秴鍑虹殑鏁版嵁瀛樺偍鍒扮鐩樹笂锛屽洜姝よ繖鏄€ц兘灏卞ぇ鎵撴姌鎵d簡锛?鎵€浠ユ垜浠繕闇€瑕佹牴鎹垜浠殑瀹為檯鎯呭喌璋冩暣max_heap_table_size锛? 渚嬪鍦?cnf鏂囦欢涓璠mysqld]鐨勪笅闈㈠姞鍏ワ細 max_heap_table_size = 2048M 鍙﹀鍦ㄥ缓琛ㄨ鍙ヤ腑杩樺彲浠ラ€氳繃MAX_ROWS鏉ユ帶鍒惰〃鐨勮褰曟暟銆? 鍐呭瓨琛ㄤ娇鐢ㄥ搱甯屾暎鍒楃储寮曟妸鏁版嵁淇濆瓨鍦ㄥ唴瀛樹腑锛屽洜姝ゅ叿鏈夋瀬蹇殑閫熷害锛岄€傚悎缂撳瓨涓皬鍨嬫暟鎹簱锛屼絾鏄娇鐢ㄤ笂鍙楀埌涓€浜涢檺鍒躲€? 1銆乭eap瀵规墍鏈夌敤鎴风殑杩炴帴鏄彲瑙佺殑锛岃繖浣垮緱瀹冮潪甯搁€傚悎鍋氱紦瀛樸€? 2銆佷粎閫傚悎浣跨敤鐨勫満鍚堛€?heap涓嶅厑璁镐娇鐢▁xxTEXT鍜寈xxBLOB鏁版嵁绫诲瀷锛涘彧鍏佽浣跨敤=鍜?amp;lt;=>鎿嶄綔绗︽潵鎼滅储璁板綍 锛堜笉鍏佽<銆?amp;gt;銆?amp;lt;=鎴?amp;gt;=锛夛紱涓嶆敮鎸乤uto_increment锛涘彧鍏佽瀵归潪绌烘暟鎹垪杩涜 绱㈠紩锛坣ot null锛夈€? 娉細鎿嶄綔绗?鈥?amp;lt;=>鈥?璇存槑锛歂ULL-safe equal.杩欎釜鎿嶄綔绗﹀拰鈥?鈥濇搷浣滅鎵ц鐩稿悓鐨勬瘮杈冩搷浣滐紝涓嶈繃鍦ㄤ袱涓搷浣滅爜鍧囦负NULL鏃讹紝鍏舵墍寰楀€间负1鑰屼笉涓篘ULL锛岃€屽綋涓€涓搷浣滅爜涓篘ULL鏃讹紝鍏舵墍寰楀€间负0鑰屼笉涓篘ULL銆? 3銆佷竴鏃︽湇鍔″櫒閲嶅惎锛屾墍鏈塰eap琛ㄦ暟鎹涪澶憋紝浣嗘槸heap琛ㄧ粨鏋勪粛鐒跺瓨鍦紝鍥犱负heap琛ㄧ粨鏋勬槸瀛樻斁鍦ㄥ疄闄呮暟鎹簱璺緞涓嬬殑锛屼笉浼氳嚜鍔ㄥ垹闄ゃ€傞噸鍚箣鍚庯紝heap灏嗚娓呯┖锛岃繖鏃跺€欏heap鐨勬煡璇㈢粨鏋滈兘鏄┖鐨勩€? 4銆佸鏋渉eap鏄鍒剁殑鏌愭暟鎹〃锛屽垯澶嶅埗涔嬪悗鎵€鏈変富閿€佺储寮曘€佽嚜澧炵瓑鏍煎紡灏嗕笉澶嶅瓨鍦紝闇€瑕侀噸鏂版坊鍔犱富閿拰绱㈠紩锛屽鏋滈渶瑕佺殑璇濄€?
memory 閲嶅惎娉ㄦ剰浜嬮」锛? 5銆佸浜庨噸鍚€犳垚鐨勬暟鎹涪澶憋紝鏈変互涓嬬殑瑙e喅鍔炴硶锛? a銆?鍦ㄤ换浣曟煡璇箣鍓嶏紝鎵ц涓€娆$畝鍗曠殑鏌ヨ锛屽垽鏂環eap琛ㄦ槸鍚﹀瓨鍦ㄦ暟鎹紝濡傛灉涓嶅瓨鍦紝鍒欐妸鏁版嵁閲嶆柊鍐欏叆锛屾垨鑰匘ROP琛ㄩ噸鏂板鍒舵煇寮犺〃銆傝繖闇€瑕佸鍋氫竴娆℃煡璇€備笉杩囧彲浠ュ啓鎴恑nclude鏂囦欢锛屽湪闇€瑕佺敤璇eap琛ㄧ殑椤甸潰闅忔椂璋冪敤锛屾瘮杈冩柟渚裤€? b銆佸浜庨渶瑕佽heap琛ㄧ殑椤甸潰锛屽湪璇ラ〉闈㈢涓€娆′笖浠呭湪绗竴娆℃煡璇㈣琛ㄦ椂锛屽鏁版嵁闆嗙粨鏋滆繘琛屽垽鏂紝濡傛灉缁撴灉涓虹┖锛屽垯闇€瑕侀噸鏂板啓鍏ユ暟鎹€傝繖鏍峰彲浠ヨ妭鐪佷竴娆℃煡璇€? c銆佹洿濂界殑鍔炴硶鏄湪mysql姣忔閲嶆柊鍚姩鏃惰嚜鍔ㄥ啓鍏ユ暟鎹埌heap锛屼絾鏄渶瑕侀厤缃湇鍔″櫒锛岃繃绋嬫瘮杈冨鏉傦紝閫氱敤鎬у彈鍒伴檺鍒躲€? 6銆佷竴浜涢鏈熷彲鑳界敤鍒扮殑sql璇彞 //濡傛灉琛ㄥ瓨鍦紝鍒欏垹闄? DROP TABLE IF EXISTS `abc`; //澶嶅埗鏁村紶琛▁yz涓篽eap琛╝bc锛堝寘鍚墍鏈夋暟鎹級 CREATE TABLE `abc` type=heap select * from `xyz`; //娣诲姞涓婚敭id ALTER TABLE `abc` ADD PRIMARY KEY (`id`); //娣诲姞绱㈠紩username ALTER TABLE `abc` ADD INDEX `abc` (`username`); 鍏跺畠鍙傝€冿細 瀹樻柟鏂囨。锛欰s indicated by the name, MEMORY tables are stored in memory. They use hash indexes by default, which makes them very fast, and very useful for creating temporary tables. However, when the server shuts down, all rows stored in MEMORY tables are lost. The tables themselves continue to exist because their definitions are stored in .frm files on disk, but they are empty when the server restarts. 鍙互鐪嬪嚭鏉EMORY纭疄鏄痸ery fast锛宎nd very useful for creating temporary tables .鎶婁复鏃惰〃鍜屽唴瀛樿〃鏀惧湪涓€璧蜂娇鐢ㄧ‘瀹炰細蹇笉灏戯細create table tmp2(id int not null) engine memory; 鍐呭瓨琛ㄧ殑寤虹珛杩樻湁涓€浜涢檺鍒舵潯浠讹細 MEMORY tables cannot contain BLOB or TEXT columns. HEAP涓嶆敮鎸丅LOB/TEXT鍒椼€? The server needs sufficient memory to maintain all MEMORY tables that are in use at the same time. 鍦ㄥ悓涓€鏃堕棿闇€瑕佽冻澶熺殑鍐呭瓨. To free memory used by a MEMORY table when you no longer require its contents, you should execute DELETE or TRUNCATE TABLE, or remove the table altogether using DROP TABLE.涓轰簡閲婃斁鍐呭瓨锛屼綘搴旇鎵цDELETE FROM heap_table鎴朌ROP TABLE heap_table銆? 鍑犱釜鍏抽敭鍙傛暟 max_heap_table_size mysql HEAP MEMORY tables 鎻愰珮琛屾暟鏀寔鐨勬柟娉? 鍒汉闂埌鐨?璁颁竴涓? mysql MEMORY tables 濡傛灉鐩墠鏀寔鐨勮鏁板埌涓婇檺杩樹笉澶熺敤 鍙互鎶?my.conf 閰嶇疆閲岄潰 max_heap_table_size = 256M 鏀瑰ぇ 璁剧疆 MAX_ROWS 鍦ㄨ窇鐫€ 鍙互 ALTER TABLE tbl_name MAX_ROWS= MAX_ROWS 渚濊禆浜?max_heap_table_size 璁剧疆
鏈€缁堣В鍐虫柟娉? 鍚庢潵GOOGLE寰楃煡锛岄渶瑕侀噸寤鸿琛ㄦ墠鍙互銆? 1. 璁剧疆鏂扮殑鍙傛暟 mysql> set global max_heap_table_size=1048576000 mysql> set global tmp_table_size=1048576000 2. 淇敼mysql閰嶇疆鏂囦欢锛屼娇寰梞ysql閲嶆柊鍚姩鏃跺彉鍔ㄨ兘澶熸寔缁敓鏁堛€? 3. 鏈€鍚庯紝浣犻渶瑕侀噸鏂拌繛涓奙YSQL锛岄噸鏂板垱寤虹浉鍏崇殑鍐呭瓨琛ㄣ€? mysql> ALTER TABLE zaojiao_sessions ENGINE MEMORY; 4. 鏈€鍚庯紝褰撳簲鐢ㄩ噸鏂拌繛鎺ュ埌mysql鏁版嵁搴撴椂锛岃繖浜涘彉鏇村氨鐢熸晥浜嗐€? -- memory 璁剧疆 tmp ,max 鍙傛暟鍚? 闇€瑕佹妸琛ㄩ噸鏂板畾涔変负鍐呭瓨琛?
鎻愪緵鎵归噺鏌ヨSQL: 鏌ヨ: MYSQL > select TABLE_SCHEMA,TABLE_NAME,sum(DATA_LENGTH+INDEX_LENGTH)/1024/1024 as total_mb from information_schema.tables where table_schema='xxxx' and table_name like 'txxxxyyyyyyy%' group by TABLE_SCHEMA,TABLE_NAME having total_mb <65 order by total_mb desc;
鎵归噺娉ㄥ唽 鍐呭瓨琛? MYSQL > select concat('alter table ',TABLE_SCHEMA,'.',TABLE_NAME,' engine memroy ;') from information_schema.tables where table_schema='xxxxx' and table_name like 'yyyyyy%';