早兩天卦绣,我們的運(yùn)維找到我,說(shuō)是客戶那邊的反饋說(shuō)在遷移私有云時(shí)數(shù)據(jù)庫(kù)里的有些表數(shù)據(jù)刷不到我們的共享緩存當(dāng)中去,我對(duì)比了了一下數(shù)據(jù)發(fā)現(xiàn)表中有七千多條數(shù)據(jù)刻坊,而刷到緩存中的數(shù)據(jù)只有大概一千條不到的數(shù)據(jù)蝗茁,而且最后一條數(shù)據(jù)是不全的醋虏。于是快速的將代碼拉出來(lái)擼了一下從表里取數(shù)據(jù)的sql,發(fā)現(xiàn)如下:
我可以發(fā)現(xiàn)sql語(yǔ)句使用了group語(yǔ)句哮翘,那么group_concat的作用是什么呢颈嚼?
group_concat(),手冊(cè)上說(shuō)明:該函數(shù)返回帶有來(lái)自一個(gè)組的連接的非NULL值的字符串結(jié)果忍坷。
那么既然是一個(gè)結(jié)果集粘舟,我們想象會(huì)出現(xiàn)什么問(wèn)題?聰明的同學(xué)可能已經(jīng)猜到了佩研,那就是結(jié)果太多導(dǎo)致結(jié)果集太長(zhǎng)柑肴,從而會(huì)出現(xiàn)超長(zhǎng)截?cái)嗟膯?wèn)題,so旬薯,問(wèn)題應(yīng)該就好解決了晰骑,mysql中肯定有關(guān)于這個(gè)結(jié)果集的參數(shù)的設(shè)置,搜集資料可以發(fā)現(xiàn)使用這個(gè)語(yǔ)句我們可以看到當(dāng)前的結(jié)果集的長(zhǎng)度參數(shù):
于是我們可以將這個(gè)參數(shù)設(shè)置大一點(diǎn)绊序,可以使用SET@@global.GROUP_CONCAT_MAX_LEN=1024000(或者將值設(shè)置成-1硕舆,表示最大值)來(lái)解決這個(gè)問(wèn)題。
但是仔細(xì)一想骤公,如果我們數(shù)據(jù)很多很多抚官,超過(guò)了我們的最大值怎么辦?其實(shí)這個(gè)臨時(shí)辦法是個(gè)解決方案阶捆,但是后期我們想保證不再出問(wèn)題的時(shí)候凌节,我們應(yīng)該找一個(gè)通用的辦法來(lái)解決這個(gè)問(wèn)題,比如分頁(yè)查詢.歡迎大家提出更好的意見(jiàn)洒试!