<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 1、設置pager **設置pager**:將mysql的執行結果快速原樣保存到服務器文件 ~~~ pager cat > /data/webroot/XXX/testMysql.csv ; #設置pager nopager ; #取消pager ~~~ ## 2、mysql當前進程數 ~~~ 可用作緊急處理: (1)當mysql query數滿了, (2)或者 慢查詢導致大片的query 處于等待 緊急處理可以殺死query,先讓系統不至于崩潰。 **注意**:只是緊急處理,需要排查是具體哪里導致的問題,從根源解決 ~~~ ~~~ show processlist \G;#查詢當前的query kill '第一列的數字' ; #殺死該查詢 ~~~ ## 3、case ~~~ select id, case tableName.fieldName when '0' then '情況1' when '2' then '情況2' when '3' then '情況3' end as fieldName from `tableName` ~~~ ## 4、引擎 MyISAM: ~~~ Select更優 不支持事務 只支持表鎖 不支持外鍵 支持FULLTEXT全文索引 ~~~ InnoDB: ~~~ 支持事務 Inset、update、delete更優 支持表鎖、行鎖 支持外鍵 不支持全文索引 ~~~ ~~~ 覺得使用InnoDB可以應對更為復雜的情況,特別是對并發的處理要比MyISAM高效。同時結合memcache也可以緩存SELECT來減少SELECT查詢,從而提高整體性能。 ~~~ ## 5、千萬級select 五千萬及以上,取全量、或者取某頁,直接用limit 會很慢 ~~~ 1、主鍵是連續的,直接計算出來,直接limit 2、主鍵是非連續的,可以考慮先找出ID ID是主鍵索引,查詢很快 先找ID,然后用in `select id from table order by id limit 50000,10;` `SELECT * FROM table WHERE id IN(XXX, XXX, XXX...);` 3、加新表維護頁數 4、體驗降級 過大的頁數提示沒數據 5、復合索引 select 索引 ~~~ ~~~ 主鍵,是一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,主鍵用于唯一標識一條 記錄,使用關鍵字 PRIMARY KEY 來創建。 索引可以覆蓋多個數據列,就是聯合索引。 聯合主鍵,就是多個主鍵聯合形成一個主鍵組合,體現在聯合。 索引可以極大的提高數據的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執行 寫操作時,還要操作索引文件 ~~~ ## 6、鎖 ~~~ ## **共享鎖與排他鎖** * 共享鎖(讀鎖):其他事務可以讀,但不能寫。 * 排他鎖(寫鎖) :其他事務不能讀取,也不能寫。 ## **粒度鎖** * MyISAM 和 MEMORY 存儲引擎采用的是表級鎖(table-level locking) * InnoDB 存儲引擎既支持行級鎖(row-level locking),也支持表級鎖,但默認情況下是采用行級鎖。 默認情況下,表鎖和行鎖都是自動獲得的, 不需要額外的命令。 但是在有的情況下, 用戶需要明確地進行鎖表或者進行事務的控制, 以便確保整個事務的完整性,這樣就需要使用事務控制和鎖定語句來完成。 ~~~ ~~~ * 表級鎖: 開銷小,加鎖快;不會出現死鎖; 鎖定粒度大,發生鎖沖突的概率最高,并發度最低。 更適合于以查詢為主,并發用戶少, * 行級鎖: 開銷大,加鎖慢;會出現死鎖; 鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。 最大程度的支持并發,同時也帶來了最大的鎖開銷。 ~~~ ~~~ ## **MyISAM加表鎖方法:** 執行查詢語句(SELECT)前,會自動給涉及的表加讀鎖, 在執行更新操作 (UPDATE、DELETE、INSERT 等)前,會自動給涉及的表加寫鎖,這個過程并不需要用戶干預, ## **InnoDB加鎖方法:** * 對于 UPDATE、 DELETE 和 INSERT 語句, InnoDB 會自動給涉及數據集加排他鎖(X); * 對于普通 SELECT 語句,InnoDB 不會加任何鎖; 事務可以通過語句顯式加共享鎖或排他鎖: * 共享鎖(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE。 * 排他鎖(X):SELECT * FROM table_name WHERE ... FOR UPDATE。 ~~~ ## 7 、sql注入 ~~~ 防護 1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和 雙"-"進行轉換等。 2.永遠不要使用動態拼裝 sql,可以使用參數化的 sql 3.永遠不要使用管理員權限的數據庫連接,為每個應用使用單獨的權限有限的數據庫連接。 4.不要把機密信息直接存放,加密或者 hash 掉密碼和敏感的信息。 5.應用的異常信息應該給出盡可能少的提示示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝 6.sql 注入檢測 ~~~ ~~~ **PHP怎樣防止SQL注入?** 使用預處理語句和參數化查詢。預處理語句和參數分別發送到數據庫服務器進行解析,參數將會被當作普通字符處理。 ~~~ ### 長度 ~~~ TINYINT——這個類型最多可容納三位數。 ·SMALLINT——最多可容納五位數。 ·MEDIUMINT——最多可容納八位數。 ·INT——可以容納十位數。 ·BIGINT——最多可容納二十位數。 ~~~ ### 復合索引 ~~~ 最左原則:只要包含最左邊的一列即可, userId, mobile, billMonth三個字段添加上聯合索引! 1.查詢條件為 userid 聯合索引有效 2.查詢條件為 mobile 聯合索引無效 3.查詢條件為 billMonth 聯合索引無效 4.查詢條件為 userid and mobile 聯合索引有效 5.查詢條件為 mobile and userid 聯合索引依舊有效 6.查詢條件為 userid or mobile 把 and 換成 or,發現聯合所索引無效! 7.查詢條件為 userid and billMonth 第一和第三,測試聯合索引依舊有效! 8.查詢條件為 mobile and billMonth 第二和第三,發現聯合索引無效! 9.查詢條件為 userid and mobile and billMonth 所有條件一起查詢,聯合索引有效! 原文:https://blog.csdn.net/Abysscarry/article/details/80792876 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看