操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    .im/post/cbd0

    前言

    本文主要針對的是關系型數(shù)據(jù)數(shù)據(jù)庫MySql。

    先簡單梳理下Mysql的基本概念,然后分創(chuàng)建時和查詢時這兩個階段的優(yōu)化展開。

    1 基本概念簡述1.1 邏輯架構

    1.2 鎖

    數(shù)據(jù)庫通過鎖機制來解決并發(fā)場景-共享鎖(讀鎖)和排他鎖(寫鎖)。讀鎖是不阻塞的,多個客戶端可以在同一時刻讀取同一個資源。寫鎖是排他的sql數(shù)據(jù)庫指令學習,并且會阻塞其他的讀鎖和寫鎖。簡單提下樂觀鎖和悲觀鎖。

    要鎖定數(shù)據(jù)需要一定的鎖策略來配合。

    但是MySql的存儲引擎的真實實現(xiàn)不是簡單的行級鎖,一般都是實現(xiàn)了多版本并發(fā)控制(MVCC)。MVCC是行級鎖的變種sql數(shù)據(jù)庫指令學習,多數(shù)情況下避免了加鎖操作,開銷更低。MVCC是通過保存數(shù)據(jù)的某個時間點快照實現(xiàn)的。

    1.3 事務

    事務保證一組原子性的操作,要么全部成功,要么全部失敗。一旦失敗,回滾之前的所有操作。MySql采用自動提交,如果不是顯式的開啟一個事務,則每個查詢都作為一個事務。

    隔離級別控制了一個事務中的修改,哪些在事務內(nèi)和事務間是可見的。四種常見的隔離級別:

    1.4 存儲引擎

    引擎,最重要,使用最廣泛的存儲引擎。被用來設計處理大量短期事務,具有高性能和自動崩潰恢復的特性。

    引擎,不支持事務和行級鎖,崩潰后無法安全恢復。

    2 創(chuàng)建時優(yōu)化2.1 和數(shù)據(jù)類型優(yōu)化

    整數(shù)

    ,,,Int, 使用的存儲8,16,24,32,64位存儲空間。使用表示不允許負數(shù),可以使正數(shù)的上線提高一倍。

    實數(shù)

    字符串

    時間類型

    優(yōu)化建議點

    2.2 索引

    索引包含一個或多個列的值。MySql只能高效的利用索引的最左前綴列。索引的優(yōu)勢:

    B-Tree

    使用最多的索引類型。采用B-Tree數(shù)據(jù)結構來存儲數(shù)據(jù)(每個葉子節(jié)點都包含指向下一個葉子節(jié)點的指針,從而方便葉子節(jié)點的遍歷)。B-Tree索引適用于全鍵值,鍵值范圍,鍵前綴查找,支持排序。

    B-Tree索引限制:

    哈希索引

    只有精確匹配索引的所有列,查詢才有效。存儲引擎會對所有的索引列計算一個哈希碼,哈希索引將所有的哈希碼存儲在索引中,并保存指向每個數(shù)據(jù)行的指針。

    哈希索引限制:

    優(yōu)化建議點

    3 查詢時優(yōu)化3.1 查詢質(zhì)量的三個重要指標3.2 查詢優(yōu)化點

    SELECT
    ?id,
    ?NAME,
    ?age
    WHERE
    ?student?s1
    INNER?JOIN?(
    ?SELECT
    ?????id
    ?FROM
    ?????student
    ?ORDER?BY
    ?????age
    ?LIMIT?50,5
    )?AS?s2?ON?s1.id?=?s2.id

    補充內(nèi)容

    來自大神-小寶

    1.條件中的字段類型和表結構類型不一致,mysql會自動加轉換函數(shù),導致索引作為函數(shù)中的參數(shù)失效。

    2.like查詢前面部分未輸入,以%開頭無法命中索引。

    3.補充2個5.7版本的新特性:

    ,就是數(shù)據(jù)庫中這一列由其他列計算而得

    CREATE?TABLE?triangle?(sidea?DOUBLE,?sideb?DOUBLE,?area?DOUBLE?AS?(sidea?*?sideb?/?2));
    insert?into?triangle(sidea,?sideb)?values(3,?4);
    select?*?from?triangle;

    +-------+-------+------+
    |?sidea?|?sideb?|?area?|
    +-------+-------+------+
    |???3??????|???4??????|??6?????|
    +-------+-------+------+

    支持JSON格式數(shù)據(jù),并提供相關內(nèi)置函數(shù)

    CREATE?TABLE?json_test?(name?JSON);
    INSERT?INTO?json_test?VALUES('{"name1":?"value1",?"name2":?"value2"}');
    SELECT?*?FROM?json_test?WHERE?JSON_CONTAINS(name,?'$.name1');

    來自JVM專家-達

    關注在性能分析中的使用

    EXPLAIN?SELECT?settleId?FROM?Settle?WHERE?settleId?=?"3679"

    最后給大家分享我寫的SQL兩件套:《SQL基礎知識第二版》《SQL高級知識第二版》的PDF電子版。里面有各個語法的解釋、大量的實例講解和批注等等,非常通俗易懂,方便大家跟著一起來實操。

    有需要的讀者可以下載學習,在下面的公眾號「數(shù)據(jù)前線」(非本號)后臺回復關鍵字:SQL,就行
    數(shù)據(jù)前線
    ——End——

    后臺回復關鍵字:1024,獲取一份精心整理的技術干貨

    后臺回復關鍵字:進群,帶你進入高手如云的交流群。


    推薦閱讀

網(wǎng)站首頁   |    關于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有