国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

            手機(jī)站
            千鋒教育

            千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

            千鋒教育

            掃一掃進(jìn)入千鋒手機(jī)站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學(xué)習(xí)站小程序
            隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

            當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 大量讀寫的mysql表怎么優(yōu)化?

            大量讀寫的mysql表怎么優(yōu)化?

            來(lái)源:千鋒教育
            發(fā)布人:xqq
            時(shí)間: 2023-10-13 11:53:03 1697169183

            一、大量讀寫的mysql表優(yōu)化步驟

            單表優(yōu)化

            除非單表數(shù)據(jù)未來(lái)會(huì)一直不斷上漲,否則不要一開始就考慮拆分,拆分會(huì)帶來(lái)邏輯、部署、運(yùn)維的各種復(fù)雜度,一般以整型值為主的表在千萬(wàn)級(jí)以下,字符串為主的表在五百萬(wàn)以下是沒有太大問題的。而事實(shí)上很多時(shí)候MySQL單表的性能依然有不少優(yōu)化空間,甚至能正常支撐千萬(wàn)級(jí)以上的數(shù)據(jù)量:

            字段

            盡量使用TINYINT、SMALLINT、MEDIUM_INT作為整數(shù)類型而非INT,如果非負(fù)則加上UNSIGNEDVARCHAR的長(zhǎng)度只分配真正需要的空間使用枚舉或整數(shù)代替字符串類型盡量使用TIMESTAMP而非DATETIME,單表不要有太多字段,建議在20以內(nèi)避免使用NULL字段,很難查詢優(yōu)化且占用額外索引空間用整型來(lái)存IP

            索引

            索引并不是越多越好,要根據(jù)查詢有針對(duì)性的創(chuàng)建,考慮在WHERE和ORDER BY命令上涉及的列建立索引,可根據(jù)EXPLAIN來(lái)查看是否用了索引還是全表掃描應(yīng)盡量避免在WHERE子句中對(duì)字段進(jìn)行NULL值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描值分布很稀少的字段不適合建索引,例如”性別”這種只有兩三個(gè)值的字段字符字段只建前綴索引字符字段較好不要做主鍵不用外鍵,由程序保證約束盡量不用UNIQUE,由程序保證約束使用多列索引時(shí)主意順序和查詢條件保持一致,同時(shí)刪除不必要的單列索引

            查詢SQL

            可通過開啟慢查詢?nèi)罩緛?lái)找出較慢的SQL不做列運(yùn)算:SELECT id WHERE age + 1 = 10,任何對(duì)列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫(kù)教程函數(shù)、計(jì)算表達(dá)式等等,查詢時(shí)要盡可能將操作移至等號(hào)右邊sql語(yǔ)句盡可能簡(jiǎn)單:一條sql只能在一個(gè)cpu運(yùn)算;大語(yǔ)句拆小語(yǔ)句,減少鎖時(shí)間;一條大sql可以堵死整個(gè)庫(kù)不用SELECT *OR改寫成IN:OR的效率是n級(jí)別,IN的效率是log(n)級(jí)別,in的個(gè)數(shù)建議控制在200以內(nèi)不用函數(shù)和觸發(fā)器,在應(yīng)用程序?qū)崿F(xiàn)避免%xxx式查詢少用JOIN使用同類型進(jìn)行比較,比如用’123’和’123’比,123和123比盡量避免在WHERE子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描對(duì)于連續(xù)數(shù)值,使用BETWEEN不用IN:SELECT id FROM t WHERE num BETWEEN 1 AND 5列表數(shù)據(jù)不要拿全表,要使用LIMIT來(lái)分頁(yè),每頁(yè)數(shù)量也不要太大

            延伸閱讀:

            二、sql緩存

            緩存可以發(fā)生在這些層次:

            MySQL內(nèi)部:在系統(tǒng)調(diào)優(yōu)參數(shù)介紹了相關(guān)設(shè)置數(shù)據(jù)訪問層:比如MyBatis針對(duì)SQL語(yǔ)句做緩存,而Hibernate可以精確到單個(gè)記錄,這里緩存的對(duì)象主要是持久化對(duì)象Persistence Object應(yīng)用服務(wù)層:這里可以通過編程手段對(duì)緩存做到更精準(zhǔn)的控制和更多的實(shí)現(xiàn)策略,這里緩存的對(duì)象是數(shù)據(jù)傳輸對(duì)象Data Transfer ObjectWeb層:針對(duì)web頁(yè)面做緩存瀏覽器客戶端:用戶端的緩存

            可以根據(jù)實(shí)際情況在一個(gè)層次或多個(gè)層次結(jié)合加入緩存。這里重點(diǎn)介紹下服務(wù)層的緩存實(shí)現(xiàn),目前主要有兩種方式:

            直寫式(Write Through):在數(shù)據(jù)寫入數(shù)據(jù)庫(kù)后,同時(shí)更新緩存,維持?jǐn)?shù)據(jù)庫(kù)與緩存的一致性。這也是當(dāng)前大多數(shù)應(yīng)用緩存框架如Spring Cache的工作方式。這種實(shí)現(xiàn)非常簡(jiǎn)單,同步好,但效率一般?;貙懯剑╓rite Back):當(dāng)有數(shù)據(jù)要寫入數(shù)據(jù)庫(kù)時(shí),只會(huì)更新緩存,然后異步批量的將緩存數(shù)據(jù)同步到數(shù)據(jù)庫(kù)上。這種實(shí)現(xiàn)比較復(fù)雜,需要較多的應(yīng)用邏輯,同時(shí)可能會(huì)產(chǎn)生數(shù)據(jù)庫(kù)與緩存的不同步,但效率非常高。
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
            請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
            免費(fèi)領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學(xué) 138****2860 剛剛成功領(lǐng)取
            王同學(xué) 131****2015 剛剛成功領(lǐng)取
            張同學(xué) 133****4652 剛剛成功領(lǐng)取
            李同學(xué) 135****8607 剛剛成功領(lǐng)取
            楊同學(xué) 132****5667 剛剛成功領(lǐng)取
            岳同學(xué) 134****6652 剛剛成功領(lǐng)取
            梁同學(xué) 157****2950 剛剛成功領(lǐng)取
            劉同學(xué) 189****1015 剛剛成功領(lǐng)取
            張同學(xué) 155****4678 剛剛成功領(lǐng)取
            鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
            董同學(xué) 138****2867 剛剛成功領(lǐng)取
            周同學(xué) 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            微博feed系統(tǒng)的推模式和拉模式的架構(gòu)是怎樣的?

            一、微博feed系統(tǒng)的推模式架構(gòu)1、發(fā)布服務(wù)負(fù)責(zé)生成用戶的消息,將消息推送到數(shù)據(jù)發(fā)布中心。2、推送服務(wù)在接收到新消息后,根據(jù)消息的類型和內(nèi)容...詳情>>

            2023-10-13 13:28:55
            Oracle數(shù)據(jù)庫(kù)運(yùn)行越來(lái)越慢,應(yīng)該怎么優(yōu)化?

            一、Oracle數(shù)據(jù)庫(kù)運(yùn)行越來(lái)越慢的優(yōu)化方法1、應(yīng)用層優(yōu)化應(yīng)用程序的設(shè)計(jì)和開發(fā)中,可以采用合理的數(shù)據(jù)查詢語(yǔ)句來(lái)減少數(shù)據(jù)庫(kù)的 I/O 操作次數(shù),例如...詳情>>

            2023-10-13 13:27:44
            mysql當(dāng)數(shù)據(jù)同時(shí)屬于多個(gè)分類時(shí),該怎么查詢?

            一、mysql當(dāng)數(shù)據(jù)同時(shí)屬于多個(gè)分類時(shí),該怎么查詢1、使用 AND 連接符可以將多個(gè)分類條件使用 AND 連接符連接起來(lái),下面是代碼示例:SELECT * FRO...詳情>>

            2023-10-13 13:23:03
            hive里面的分區(qū)表和分桶表一般用于什么場(chǎng)景?

            一、hive里面的分區(qū)表的一般使用場(chǎng)景 數(shù)據(jù)量非常大:數(shù)據(jù)量非常大的情況下,通過分區(qū)可以進(jìn)行數(shù)據(jù)分割,方便管理和維護(hù)。數(shù)據(jù)需要按照某種規(guī)則...詳情>>

            2023-10-13 13:20:29
            Python爬蟲是什么?

            一、爬蟲的基本原理Python爬蟲的基本原理是通過發(fā)送HTTP請(qǐng)求獲取網(wǎng)頁(yè)的內(nèi)容,然后解析網(wǎng)頁(yè)的結(jié)構(gòu),提取出所需的數(shù)據(jù)。它使用HTTP庫(kù)向目標(biāo)網(wǎng)站發(fā)...詳情>>

            2023-10-13 12:34:56
            快速通道