syntax error near unexpected token `問題的解決

panpong發表於2014-09-16

syntax error near unexpected token `問題的解決

摘自:

先說點常識問題:

       因為MS-DOSWindows是回車+換行來表示換行,因此在Linux下用Vim檢視在Windows下用VC寫的程式碼,行尾後的“^M”符號,表示的是符。

       現在,你使用vim -b 開啟你的檔案。就會發現每一行都有^M ,那麼我們可以是用全域性替換替換掉,方法如下:

    在命令編輯行<就是: ESC 然後shift+:冒號>輸入:%s/^M//g

     注意:上述命令列中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”鍵生成的。

MyISAM中確實很容易就會發生Lock一大片的情況,主要是某些情況下某個表的耗時Select語句,阻塞了Insert語句,然後Insert語句就鎖住了這個表,讓其他的Select語句無法執行。

簡單的說就是耗時的Select語句,參雜了一些Insert語句,導致大面積Select被Lock,演變成了序列執行。

引數如下:

concurrent_insert  透過檢視 show variables like '%concurrent%'

0: 表示不能併發,Select, insert之間只能序列執行

1:表中有空洞(刪除記錄留下的)情況下,阻塞insert; 表中無空洞的情況下,Insert併發插入表尾

2:無論是否有空洞都併發插入表尾

預設情況下, 這個值是1, 所以在既有Select又有insert的情況下,很容易就出現了近似序列的執行場景。


解決方法:

1.  concurrent_insert=2  壞處就是delete的空洞永遠都不去補回來了,浪費空間,浪費了cpu掃描

2.  --low-priority-updates啟用mysqld,讓select有更高優先順序

3.  在語句中加上HIGH_PRIORITY, LOW_PRIORITY以定義優先順序,讓select趕在insert鎖定之前執行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-1270804/,如需轉載,請註明出處,否則將追究法律責任。

相關文章