2011-08-22 40 views
1

我有一個PHP/MySQL電子商務應用程序,它有幾個innoDB表(用於事務處理)。在隨機時間間隔中會有一些慢查詢(這些查詢需要正好爲 51秒),並且這些會導致訪問此單個表時出現問題。InnoDB數據庫表需要51秒

其他MyISAM表很好 - 它只是這個單一的innoDB表崩潰了我的應用程序。這個innoDB表沒有設置任何主鍵,因此不能與主鍵有關。

此外,當這種錯誤發生時,我得到一個'內部服務器錯誤' - 可以強制MySQL顯示錯誤。

任何想法表明爲什麼這些需要51秒&超時?

+1

你能發佈導致速度降低的實際查詢嗎?另外,發佈表結構(s)不會受到傷害。 –

+3

內部服務器錯誤是因爲你的web服務器(很可能是apache)默認設置爲等待你的腳本在30秒內完成執行,在超時和/或'提前結束腳本頭部'之後,apache顯示HTTP 500.發佈確切的查詢。另外,沒有主鍵不是一個好主意;) –

+0

你對innodb使用默認的mysql設置嗎? –

回答

0
  1. 變化my.cnf文件 - > innodb_file_per_table
  2. 製作備份
  3. 變化表類型從Innodb的在MyISAM那麼的MyISAM InnoDB的
  4. 需要有關索引和查詢表結構
  5. 主鍵和什麼?
  6. 試試EXPLAIN SELECT .....
  7. 你的桌子有多大?