MYSQL資料庫表定序不一致導致聯表查詢,索引不起作用問題

來源:互聯網
上載者:User

標籤:mysql   解決   字元集   變更   命名   pair   報錯   指定   資源   

Mysql資料庫表定序不一致導致聯表查詢,索引不起作用問題

表更描述: 將mysql資料庫中的worktask表添加ishaspic欄位。

具體操作:(1)資料庫worktask表新添是否有圖片欄位ishaspic;新添欄位時,報錯

[SQL] alter table WorkTask add ishaspic int(10) Null;
[Err] 1034 - Incorrect key file for table ‘WorkTask‘; try to repair it

解決方案:建立worktask表,添加ishaspic欄位,將原worktask表中的資料插入建立表中.

(2)生產環境部署變更代碼,應用啟動後,一段時間後台報錯

org.hibernate.exception.GenericJDBCException: Could not open connection

java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.

(3)監控資料庫服務,發現查詢sql突然變慢,資料庫伺服器CPU資源佔用率超高。

(4)變更回退,錯誤仍然存在。

原來應用能正常運行,現在不能正常運行,監控資料庫,發現sql查詢執行時間突然變慢,單獨執行sql,發現也很慢,到達百秒級。

問題定位:在建立worktask表時,改變了表的定序,以至於使和所聯表的定序不一樣,導致聯表查詢SQL語句,索引不起作用。

解決方案:(1)將聯表查詢SQL進行拆分;(2)調整資料表的定序,保證所聯表資料表的定序一致。

*************************************************************************************

MySQL中的定序。在建立MySQL資料庫或表的時候經常會選擇字元集和定序。資料庫用的字元集大家都知道是怎麼回事,那定序是什麼呢?

定序:是指對指定字元集下不同字元的比較規則。其特徵有以下幾點:

1、 兩個不同的字元集不能有相同的定序

2、 兩個字元集有一個預設的定序

3、 有一些常用的命名規則。如_ci結尾表示大小寫不敏感(caseinsensitive),_cs表示大小寫敏感(case sensitive),_bin表示二進位的比較(binary).

在MySQL資料庫中,可以使用show collation來查看支援的各種排序呢規則,我用的是MySQL 5.6.12-log版本的資料庫,支援219種定序。

MYSQL資料庫表定序不一致導致聯表查詢,索引不起作用問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.