MySQL只會(huì)當(dāng)SQL涉及相關(guān)表時(shí),才把表的數(shù)據(jù)調(diào)入內(nèi)存,并會(huì)根據(jù)LRU算法,在CACHE中保留上個(gè)查詢的結(jié)果緩沖。
寧明網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
平時(shí),表不是會(huì)被加載到內(nèi)存中去的。
show table status;
然后你可以查看 Data_length 得到數(shù)據(jù)長(zhǎng)度,但只是參考,并不精確。 MyISAM的數(shù)據(jù)文件就在datadir/dbname中的 tablename.myd, *.myi, *.frm, 但innodb 的都存于一個(gè)ibdata文件中。
服務(wù)器內(nèi)存占用過高的解決方法:
1,首先通過任務(wù)管理器進(jìn)行進(jìn)程排序,查找占用內(nèi)存較大的程序進(jìn)程。一般占用內(nèi)存較大的進(jìn)程有W3WP、sqlserver、mysqld-nt.exe;
2, 站點(diǎn)進(jìn)程w3wp 可以在cmd命令行中通過 iisapp 命令來對(duì)應(yīng)是那個(gè)網(wǎng)站占用內(nèi)存較大??梢酝ㄟ^設(shè)置回收時(shí)間、內(nèi)存最大使用值或共用進(jìn)程池來減少內(nèi)存的占用,但是如果要保證網(wǎng)站的訪問質(zhì)量,還是建議升級(jí)至更高型號(hào)來解決;
3,數(shù)據(jù)庫(kù) sql server 也可以通過數(shù)據(jù)庫(kù)的企業(yè)管理器來設(shè)置最大內(nèi)存占用,但是如果網(wǎng)站程序必須要占用較大內(nèi)存的話,設(shè)置后會(huì)發(fā)生頁面報(bào)錯(cuò)、打不開等問題;
4,MYSQL本身會(huì)占用較大虛擬內(nèi)存,如果不使用mysql數(shù)據(jù)庫(kù)的話,可以將其停止。
如何查看MySQL占用的內(nèi)存都用在哪了
1、查看物理CPU的個(gè)數(shù)
[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep “physical id”|sort |uniq|wc -l
1
2、查看邏輯CPU的個(gè)數(shù)
[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep “processor”|wc -l
4
3、查看CPU是幾核(即,核心數(shù))
[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep “cores”|uniq
cpu cores : 4
4、查看CPU的主頻
[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep MHz|uniq
cpu MHz : 2499.982
5、當(dāng)前操作系統(tǒng)內(nèi)核信息
[root@MysqlCluster01 ~]# uname -a
Linux MysqlCluster01 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
6、當(dāng)前操作系統(tǒng)發(fā)行版信息
[root@MysqlCluster01 ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
7、內(nèi)存使用情況
[root@MysqlCluster01 ~]# free -m
total used free shared buffers cached
Mem: 7863 2738 5125 0 141 835
-/+ buffers/cache: 1761 6102
Swap: 3967 0 3967
命令: show processlist;
如果是root帳號(hào),你能看到所有用戶的當(dāng)前連接。如果是其它普通帳號(hào),只能看到自己占用的連接。
show processlist;只列出前100條,如果想全列出請(qǐng)使用show full processlist;
mysql show
processlist;
命令: show status;
命令:show status like '%下面變量%';
Aborted_clients 由于客戶沒有正確關(guān)閉連接已經(jīng)死掉,已經(jīng)放棄的連接數(shù)量。
Aborted_connects
嘗試已經(jīng)失敗的MySQL服務(wù)器的連接的次數(shù)。
Connections 試圖連接MySQL服務(wù)器的次數(shù)。
Created_tmp_tables
當(dāng)執(zhí)行語句時(shí),已經(jīng)被創(chuàng)造了的隱含臨時(shí)表的數(shù)量。
Delayed_insert_threads 正在使用的延遲插入處理器線程的數(shù)量。
Delayed_writes 用INSERT DELAYED寫入的行數(shù)。
Delayed_errors 用INSERT
DELAYED寫入的發(fā)生某些錯(cuò)誤(可能重復(fù)鍵值)的行數(shù)。
Flush_commands 執(zhí)行FLUSH命令的次數(shù)。
Handler_delete
請(qǐng)求從一張表中刪除行的次數(shù)。
Handler_read_first 請(qǐng)求讀入表中第一行的次數(shù)。
Handler_read_key
請(qǐng)求數(shù)字基于鍵讀行。
Handler_read_next 請(qǐng)求讀入基于一個(gè)鍵的一行的次數(shù)。
Handler_read_rnd
請(qǐng)求讀入基于一個(gè)固定位置的一行的次數(shù)。
Handler_update 請(qǐng)求更新表中一行的次數(shù)。
Handler_write
請(qǐng)求向表中插入一行的次數(shù)。
Key_blocks_used 用于關(guān)鍵字緩存的塊的數(shù)量。
Key_read_requests
請(qǐng)求從緩存讀入一個(gè)鍵值的次數(shù)。
Key_reads 從磁盤物理讀入一個(gè)鍵值的次數(shù)。
Key_write_requests
請(qǐng)求將一個(gè)關(guān)鍵字塊寫入緩存次數(shù)。
Key_writes 將一個(gè)鍵值塊物理寫入磁盤的次數(shù)。
Max_used_connections
同時(shí)使用的連接的最大數(shù)目。
Not_flushed_key_blocks 在鍵緩存中已經(jīng)改變但是還沒被清空到磁盤上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY隊(duì)列中等待寫入的行的數(shù)量。
Open_tables 打開表的數(shù)量。
Open_files 打開文件的數(shù)量。
Open_streams 打開流的數(shù)量(主要用于日志記載)
Opened_tables
已經(jīng)打開的表的數(shù)量。
Questions 發(fā)往服務(wù)器的查詢的數(shù)量。
Slow_queries
要花超過long_query_time時(shí)間的查詢數(shù)量。
Threads_connected 當(dāng)前打開的連接的數(shù)量。
Threads_running 不在睡眠的線程數(shù)量。
Uptime 服務(wù)器工作了多少秒
線上某IM業(yè)務(wù)基于Redis作為持久化層實(shí)現(xiàn),近期出現(xiàn)Redis內(nèi)存告警,于是對(duì)線上Redis各Key內(nèi)存占用進(jìn)行分析,便于進(jìn)行業(yè)務(wù)改造。
雖然Redis4.0以后提供了memory命令進(jìn)行內(nèi)存查詢,但是對(duì)于存在大量業(yè)務(wù)key來說可能不夠方便,只看統(tǒng)計(jì)結(jié)果又不夠詳細(xì)不好定位具體業(yè)務(wù),選擇使用rdbtools來進(jìn)行分析。
運(yùn)維提供了阿里云Redis自動(dòng)備份文件 backupfile.rdb 。當(dāng)然也可以自行到Redis目錄下獲取 dump.rdb 文件。
我這里使用的是linux環(huán)境,確保python及pip已經(jīng)正確安裝。
rdbtools項(xiàng)目地址:
rdbtools安裝,以pip3為例:
rdbtools生成內(nèi)存報(bào)告:(更多使用方法可以參考官方文檔)
執(zhí)行內(nèi)存分析后CPU會(huì)跑滿,耐心等待即可。我這里630M共計(jì)500萬個(gè)key的rdb文件運(yùn)行了接近10分鐘。
執(zhí)行完成后在當(dāng)前目錄文件生成了內(nèi)存報(bào)告文件 memory.csv 。
由于生成的內(nèi)存報(bào)告文件 memory.csv 可能很大,直接打開進(jìn)行分析處理存在限制,將數(shù)據(jù)導(dǎo)入MySQL。
創(chuàng)建表:
此表字段與csv文件字段一一對(duì)應(yīng),然后將csv文件數(shù)據(jù)導(dǎo)入該表。
最后通過排序以及key的模糊查詢等手段,即可完成Redis內(nèi)存分析。
網(wǎng)頁顯示如下文字'
mysql的錯(cuò)誤:查詢錯(cuò)誤
錯(cuò)誤號(hào)碼: 1064年你有一個(gè)錯(cuò)誤在你的sql語法;檢查手冊(cè),對(duì)應(yīng)于你的mysql服務(wù)器版本為正確的語法來使用近''在1號(hào)線
日期:周三, 2007年11月28日21時(shí)14分26秒
葉: 219.225.101.231
瀏覽器: mozilla/4.0 (兼容; msie 7.0 ;窗戶新臺(tái)幣6.0 ; slcc1 ;的。 net clr 2.0.50727 ;媒體中心電腦5.0 ;的。 net clr 3.0.04506 ;的。 net clr 1.1.4322 ; maxthon 2.0 )
referer :
Mysql錯(cuò)誤代碼
mysql的出錯(cuò)代碼表,根據(jù)mysql的頭文件mysql/include/mysqld_error.h整理而成
1005:創(chuàng)建表失敗
1006:創(chuàng)建數(shù)據(jù)庫(kù)失敗
1007:數(shù)據(jù)庫(kù)已存在,創(chuàng)建數(shù)據(jù)庫(kù)失敗
1008:數(shù)據(jù)庫(kù)不存在,刪除數(shù)據(jù)庫(kù)失敗
1009:不能刪除數(shù)據(jù)庫(kù)文件導(dǎo)致刪除數(shù)據(jù)庫(kù)失敗
1010:不能刪除數(shù)據(jù)目錄導(dǎo)致刪除數(shù)據(jù)庫(kù)失敗
1011:刪除數(shù)據(jù)庫(kù)文件失敗
1012:不能讀取系統(tǒng)表中的記錄
1020:記錄已被其他用戶修改
1021:硬盤剩余空間不足,請(qǐng)加大硬盤可用空間
1022:關(guān)鍵字重復(fù),更改記錄失敗
1023:關(guān)閉時(shí)發(fā)生錯(cuò)誤
1024:讀文件錯(cuò)誤
1025:更改名字時(shí)發(fā)生錯(cuò)誤
1026:寫文件錯(cuò)誤
1032:記錄不存在
1036:數(shù)據(jù)表是只讀的,不能對(duì)它進(jìn)行修改
1037:系統(tǒng)內(nèi)存不足,請(qǐng)重啟數(shù)據(jù)庫(kù)或重啟服務(wù)器
1038:用于排序的內(nèi)存不足,請(qǐng)?jiān)龃笈判蚓彌_區(qū)
1040:已到達(dá)數(shù)據(jù)庫(kù)的最大連接數(shù),請(qǐng)加大數(shù)據(jù)庫(kù)可用連接數(shù)
1041:系統(tǒng)內(nèi)存不足
1042:無效的主機(jī)名
1043:無效連接
1044:當(dāng)前用戶沒有訪問數(shù)據(jù)庫(kù)的權(quán)限
1045:不能連接數(shù)據(jù)庫(kù),用戶名或密碼錯(cuò)誤
1048:字段不能為空
1049:數(shù)據(jù)庫(kù)不存在
1050:數(shù)據(jù)表已存在
1051:數(shù)據(jù)表不存在
1054:字段不存在
1064 處理控制請(qǐng)求時(shí),服務(wù)出現(xiàn)意外情況。
1065:無效的SQL語句,SQL語句為空
1081:不能建立Socket連接
1114:數(shù)據(jù)表已滿,不能容納任何記錄
1116:打開的數(shù)據(jù)表太多
1129:數(shù)據(jù)庫(kù)出現(xiàn)異常,請(qǐng)重啟數(shù)據(jù)庫(kù)
1130:連接數(shù)據(jù)庫(kù)失敗,沒有連接數(shù)據(jù)庫(kù)的權(quán)限
1133:數(shù)據(jù)庫(kù)用戶不存在
1141:當(dāng)前用戶無權(quán)訪問數(shù)據(jù)庫(kù)
1142:當(dāng)前用戶無權(quán)訪問數(shù)據(jù)表
1143:當(dāng)前用戶無權(quán)訪問數(shù)據(jù)表中的字段
1146:數(shù)據(jù)表不存在
1147:未定義用戶對(duì)數(shù)據(jù)表的訪問權(quán)限
1149:SQL語句語法錯(cuò)誤
1158:網(wǎng)絡(luò)錯(cuò)誤,出現(xiàn)讀錯(cuò)誤,請(qǐng)檢查網(wǎng)絡(luò)連接狀況
1159:網(wǎng)絡(luò)錯(cuò)誤,讀超時(shí),請(qǐng)檢查網(wǎng)絡(luò)連接狀況
1160:網(wǎng)絡(luò)錯(cuò)誤,出現(xiàn)寫錯(cuò)誤,請(qǐng)檢查網(wǎng)絡(luò)連接狀況
1161:網(wǎng)絡(luò)錯(cuò)誤,寫超時(shí),請(qǐng)檢查網(wǎng)絡(luò)連接狀況
1062:字段值重復(fù),入庫(kù)失敗
1169:字段值重復(fù),更新記錄失敗
1177:打開數(shù)據(jù)表失敗
1180:提交事務(wù)失敗
1181:回滾事務(wù)失敗
1203:當(dāng)前用戶和數(shù)據(jù)庫(kù)建立的連接已到達(dá)數(shù)據(jù)庫(kù)的最大連接數(shù),請(qǐng)?jiān)龃罂捎玫臄?shù)據(jù)庫(kù)連接數(shù)或重啟數(shù)據(jù)庫(kù)
1205:加鎖超時(shí)
1211:當(dāng)前用戶沒有創(chuàng)建用戶的權(quán)限
1216:外鍵約束檢查失敗,更新子表記錄失敗
1217:外鍵約束檢查失敗,刪除或修改主表記錄失敗
1226:當(dāng)前用戶使用的資源已超過所允許的資源,請(qǐng)重啟數(shù)據(jù)庫(kù)或重啟服務(wù)器
1227:權(quán)限不足,您無權(quán)進(jìn)行此操作
1235:MySQL版本過低,不具有本功
更多