ORACLE SQL輸入的變量由于隱式轉換無法使用索引的分析優化

近期,某客戶在巡檢分析AWR報告時,發現有個TOP SQL的執行效率偏慢,檢查分析SQL,發現數據塊讀取量高,分析執行計劃,發現有個查詢條件未使用到索引;

對執行計劃及表上的字段、索引進行分析,可以發現表上對應字段是有索引的;深入分析執行計劃的Predicate Information部分,可以發現有:access("SOO"."PO"=SYS_OP_C2C("A"."PORDER_NO") AND,??SYS_OP_C2C是ORACLE的一個內部函數,它在VARCHAR2和NVARCHAR2數據類型之間進行轉換。當必須執行隱式數據類型轉換時,它由SQL引擎添加。

查看字段類型,確認是PORDER_NO???VARCHAR2(20):

SQL> desc test.TESTDATA;Name                                                                                                              Null?    Type----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------ID                                                                                                                NOT NULL VARCHAR2(36)REC_CREATOR                                                                                                                VARCHAR2(24)REC_CREATE_TIME                                                                                                            DATEREC_REVISOR                                                                                                                VARCHAR2(24)REC_REVISE_TIME                                                                                                            DATEPORDER_NO                                                                                                                  VARCHAR2(20)
……

分析過程如下:

1、SQL執行信息統計

SQL> set linesize 180 pagesize 1800
SQL> select sql_id,PLAN_HASH_VALUE,CHILD_number,EXECUTIONS,BUFFER_GETS/EXECUTIONS,ELAPSED_TIME/EXECUTIONS/1000 from v$sql where sql_id='bh0f095aumxth';SQL_ID        PLAN_HASH_VALUE CHILD_NUMBER EXECUTIONS BUFFER_GETS/EXECUTIONS ELAPSED_TIME/EXECUTIONS/1000
------------- --------------- ------------ ---------- ---------------------- ----------------------------
bh0f095aumxth      3442512347            0       7036             166804.411                   909.259484
bh0f095aumxth      3442512347            1       2234              167502.39                   928.837742

2、對表字段等數據的統計

SQL> select count(*) from test.TESTDATA;COUNT(*)
----------4294427SQL> select count(distinct PORDER_NO) from test.TESTDATA;COUNT(DISTINCTPORDER_NO)
------------------------230261

3、索引信息

SQL> set linesize 180 pagesize 180
SQL> col owner for a15
SQL> col COLUMN_NAME for a20
SQL> col index_name for a20
SQL> col table_name for a20
SQL> select  a.OWNER,a.INDEX_NAME,a.table_name,b.column_name,a.status,b.column_length from dba_indexes a,dba_IND_COLUMNS b 2   where a.index_name=b.index_name and a.owner=b.INDEX_OWNER and a.TABLE_OWNER=b.TABLE_OWNER and a.owner='test' and  a.TABLE_NAME in(upper('TESTDATA'));OWNER           INDEX_NAME           TABLE_NAME           COLUMN_NAME          STATUS   COLUMN_LENGTH
--------------- -------------------- -------------------- -------------------- -------- -------------
test      IDX_TESTDATA_PORD TESTDATA          PORDER_NO            VALID               20ER_NO
test      IDX_TESTDATA_PORM TESTDATA          PORDER_NO            VALID               20SC
test      IDX_TESTDATA_PORM TESTDATA          MSC_LINE_NO          VALID                4SC
test      IDX_SPEC_AIM         TESTDATA          OUT_SPEC_AIM         VALID               22
test      TESTDATA_PK       TESTDATA          ID                   VALID               36

4、使用SQL自動優化進行分析,建議添加函數索引

SQL> set serveroutput on
SQL> var tuning_task varchar2(100);  
SQL> DECLARE  2    l_sql_id v$session.prev_sql_id%TYPE;  3    l_tuning_task VARCHAR2(30);  4  BEGIN  5    l_sql_id:='bh0f095aumxth';  6    l_tuning_task := dbms_sqltune.create_tuning_task(sql_id => l_sql_id);  7    :tuning_task:=l_tuning_task;  8    dbms_sqltune.execute_tuning_task(l_tuning_task);  9    dbms_output.put_line(l_tuning_task);  10  END;  11  /
TASK_67147PL/SQL procedure successfully completed.SQL> set long 999999
SQL> set LONGCHUNKSIZE 999999
SQL> set serveroutput on size 999999
SQL> set linesize 200 pagesize 1000
SQL> SELECT dbms_sqltune.report_tuning_task('TASK_67147') FROM dual; DBMS_SQLTUNE.REPORT_TUNING_TASK('TASK_67147')
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name   : TASK_67147
Tuning Task Owner  : SYS
Workload Type      : Single SQL Statement
Scope              : COMPREHENSIVE
Time Limit(seconds): 1800
Completion Status  : COMPLETED
Started at         : 04/17/2025 15:33:52
Completed at       : 04/17/2025 15:34:18-------------------------------------------------------------------------------
Schema Name: WIPDBA
SQL ID     : bh0f095aumxth
SQL Text   : SELECT A.TREAT_DESC TH,A.MTR_TYPE_DESC AS CZ  ,B.TREAT_DESC ASSDTH,B.MTR_TYPE_DESC AS SDCZ  FROM VIEWER.V_QM_ORDER_MTR_DATA ALEFT JOIN VIEWER.V_QM_ORDER_MTR_DATA B ON A.PORDER_NO =B.PORDER_NO AND B.WHOLE_BACKLOG_SEQ = A.WHOLE_BACKLOG_SEQ-1INNER JOIN WIPDBA.Z_SHOPORDER_OMORDER SOO ON A.PORDER_NO =SOO.PO AND SOO.STEP_ID = A.WHOLE_BACKLOG_SEQ  INNER JOINWIPDBA.SHOP_ORDER SO ON SO.HANDLE = SOO.SHOPORDER_BO   WHEREA.WHOLE_BACKLOG_CODE =  :1   AND SO.SHOP_ORDER = :2
Bind Variables :1 -  (VARCHAR2(32)):Q2 -  (VARCHAR2(128)):SOB05-B250410002-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------A potentially better execution plan was found for this statement.Recommendation (estimated benefit<=10%)---------------------------------------- Consider accepting the recommended SQL profile.execute dbms_sqltune.accept_sql_profile(task_name => 'TASK_67147',task_owner => 'SYS', replace => TRUE);Validation results------------------The SQL profile was tested by executing both its plan and the original planand measuring their respective execution statistics. A plan may have beenonly partially executed if the other could be run to completion in less time.Original Plan  With SQL Profile  % Improved-------------  ----------------  ----------Completion Status:            COMPLETE          COMPLETEElapsed Time (s):            1.461191          1.002437      31.39 %CPU Time (s):                1.453814          1.001961      31.08 %User I/O Time (s):                  0                 0Buffer Gets:                   185326            173791       6.22 %Physical Read Requests:             7                 7          0 %Physical Write Requests:            0                 0Physical Read Bytes:           114688            114688          0 %Physical Write Bytes:               0                 0Rows Processed:                     1                 1Fetches:                            1                 1Executions:                         1                 12- Index Finding (see explain plans section below)
--------------------------------------------------The execution plan of this statement can be improved by creating one or moreindices.Recommendation (estimated benefit: 99.74%)------------------------------------------- Consider running the Access Advisor to improve the physical schema designor creating the recommended index.create index test.IDX$$_1064B0001 ontest.TESTDATA(SYS_OP_C2C("PORDER_NO"),"WHOLE_BACKLOG_SEQ");Rationale---------Creating the recommended indices significantly improves the execution planof this statement. However, it might be preferable to run "Access Advisor"using a representative SQL workload as opposed to a single statement. Thiswill allow to get comprehensive index recommendations which takes intoaccount index maintenance overhead and additional space consumption.-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------1- Original With Adjusted Cost
------------------------------
Plan hash value: 2019886439-----------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |                        |    22 |  4840 |  5209K  (1)| 00:03:24 |
|   1 |  NESTED LOOPS                    |                        |    22 |  4840 |  5209K  (1)| 00:03:24 |
|   2 |   NESTED LOOPS OUTER             |                        |    22 |  4378 |  5209K  (1)| 00:03:24 |
|*  3 |    HASH JOIN                     |                        |    22 |  3036 | 55372   (2)| 00:00:03 |
|   4 |     NESTED LOOPS                 |                        |     1 |   105 |     5   (0)| 00:00:01 |
|   5 |      NESTED LOOPS                |                        |     1 |   105 |     5   (0)| 00:00:01 |
|   6 |       TABLE ACCESS BY INDEX ROWID| SHOP_ORDER             |     1 |    53 |     4   (0)| 00:00:01 |
|*  7 |        INDEX RANGE SCAN          | IDX_SHOP_ORDER         |     1 |       |     3   (0)| 00:00:01 |
|*  8 |       INDEX RANGE SCAN           | INDEX_SHOPORDER_BO     |     1 |       |     0   (0)| 00:00:01 |
|   9 |      TABLE ACCESS BY INDEX ROWID | Z_SHOPORDER_OMORDER    |     1 |    52 |     1   (0)| 00:00:01 |
|* 10 |     TABLE ACCESS FULL            | TESTDATA            |  1271K|    40M| 55353   (2)| 00:00:03 |
|* 11 |    VIEW PUSHED PREDICATE         | V_QM_ORDER_MTR_DATA    |     1 |    61 |   234K  (1)| 00:00:10 |
|  12 |     NESTED LOOPS                 |                        |    58 |  3016 |   234K  (1)| 00:00:10 |
|  13 |      NESTED LOOPS                |                        |   242K|  3016 |   234K  (1)| 00:00:10 |
|* 14 |       INDEX RANGE SCAN           | OM_LINE_DATA_IDX01     |   242K|  4983K|     3   (0)| 00:00:01 |
|* 15 |       INDEX RANGE SCAN           | IDX_TESTDATA_PORMSC |     1 |       |     0   (0)| 00:00:01 |
|  16 |      TABLE ACCESS BY INDEX ROWID | TESTDATA            |     1 |    31 |     1   (0)| 00:00:01 |
|* 17 |   INDEX RANGE SCAN               | OM_LINE_DATA_IDX01     |     1 |    21 |     0   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------3 - access("SOO"."PO"=SYS_OP_C2C("A"."PORDER_NO") AND"A"."WHOLE_BACKLOG_SEQ"=TO_NUMBER("SOO"."STEP_ID"))7 - access("SO"."SHOP_ORDER"=SYS_OP_C2C(:2))8 - access("SO"."HANDLE"="SOO"."SHOPORDER_BO")10 - filter("A"."WHOLE_BACKLOG_CODE"=:1)11 - filter("B"."WHOLE_BACKLOG_SEQ"(+)="A"."WHOLE_BACKLOG_SEQ"-1)14 - access("B"."PORDER_NO"="A"."PORDER_NO")filter(TO_NUMBER("B"."DEFAULT_FLAG")=0)15 - access("A"."PORDER_NO"="A"."PORDER_NO" AND "A"."MSC_LINE_NO"="B"."MSC_LINE_NO")filter("A"."PORDER_NO"="B"."PORDER_NO")17 - access("A"."PORDER_NO"="B"."PORDER_NO" AND "A"."MSC_LINE_NO"="B"."MSC_LINE_NO")filter(TO_NUMBER("B"."DEFAULT_FLAG")=0)2- Using SQL Profile
--------------------
Plan hash value: 330716963----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                           |     7 |  1540 | 55407   (2)| 00:00:03 |
|   1 |  NESTED LOOPS OUTER                      |                           |     7 |  1540 | 55407   (2)| 00:00:03 |
|   2 |   NESTED LOOPS                           |                           |     7 |  1113 | 55372   (2)| 00:00:03 |
|*  3 |    HASH JOIN                             |                           |    22 |  3036 | 55372   (2)| 00:00:03 |
|   4 |     NESTED LOOPS                         |                           |     1 |   105 |     5   (0)| 00:00:01 |
|   5 |      NESTED LOOPS                        |                           |     1 |   105 |     5   (0)| 00:00:01 |
|   6 |       TABLE ACCESS BY INDEX ROWID BATCHED| SHOP_ORDER                |     1 |    53 |     4   (0)| 00:00:01 |
|*  7 |        INDEX RANGE SCAN                  | IDX_SHOP_ORDER            |     1 |       |     3   (0)| 00:00:01 |
|*  8 |       INDEX RANGE SCAN                   | INDEX_SHOPORDER_BO        |     1 |       |     0   (0)| 00:00:01 |
|   9 |      TABLE ACCESS BY INDEX ROWID         | Z_SHOPORDER_OMORDER       |     1 |    52 |     1   (0)| 00:00:01 |
|* 10 |     TABLE ACCESS FULL                    | TESTDATA               |  1271K|    40M| 55353   (2)| 00:00:03 |
|* 11 |    INDEX RANGE SCAN                      | OM_LINE_DATA_IDX01        |     1 |    21 |     0   (0)| 00:00:01 |
|* 12 |   VIEW PUSHED PREDICATE                  | V_QM_ORDER_MTR_DATA       |     1 |    61 |     5   (0)| 00:00:01 |
|  13 |    NESTED LOOPS                          |                           |    58 |  3016 |     5   (0)| 00:00:01 |
|  14 |     TABLE ACCESS BY INDEX ROWID BATCHED  | TESTDATA               |    19 |   589 |     5   (0)| 00:00:01 |
|* 15 |      INDEX RANGE SCAN                    | IDX_TESTDATA_PORDER_NO |    19 |       |     3   (0)| 00:00:01 |
|* 16 |     INDEX RANGE SCAN                     | OM_LINE_DATA_IDX01        |     3 |    63 |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------3 - access("SOO"."PO"=SYS_OP_C2C("A"."PORDER_NO") AND "A"."WHOLE_BACKLOG_SEQ"=TO_NUMBER("SOO"."STEP_ID"))7 - access("SO"."SHOP_ORDER"=SYS_OP_C2C(:2))8 - access("SO"."HANDLE"="SOO"."SHOPORDER_BO")10 - filter("A"."WHOLE_BACKLOG_CODE"=:1)11 - access("A"."PORDER_NO"="B"."PORDER_NO" AND "A"."MSC_LINE_NO"="B"."MSC_LINE_NO")filter(TO_NUMBER("B"."DEFAULT_FLAG")=0)12 - filter("B"."WHOLE_BACKLOG_SEQ"(+)="A"."WHOLE_BACKLOG_SEQ"-1)15 - access("A"."PORDER_NO"="A"."PORDER_NO")16 - access("B"."PORDER_NO"="A"."PORDER_NO" AND "A"."MSC_LINE_NO"="B"."MSC_LINE_NO")filter("A"."PORDER_NO"="B"."PORDER_NO" AND TO_NUMBER("B"."DEFAULT_FLAG")=0)3- Using New Indices
--------------------
Plan hash value: 2552130591----------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                 | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
----------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                          |                           |    13 |  2860 |   143   (1)| 00:00:01 |        |      |          |
|   1 |  PX COORDINATOR                           |                           |       |       |            |          |        |      |          |
|   2 |   PX SEND QC (RANDOM)                     | :TQ10001                  |    13 |  2860 |   143   (1)| 00:00:01 |  Q1,01 | P->S | QC (RAND)  |
|   3 |    NESTED LOOPS OUTER                     |                           |    13 |  2860 |   143   (1)| 00:00:01 |  Q1,01 | PCWP |          |
|   4 |     NESTED LOOPS                          |                           |    13 |  2067 |   106   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|   5 |      NESTED LOOPS                         |                           |    39 |  5382 |   106   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|   6 |       NESTED LOOPS                        |                           |     1 |   105 |     5   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|   7 |        TABLE ACCESS BY INDEX ROWID BATCHED| SHOP_ORDER                |     2 |   106 |     4   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|   8 |         BUFFER SORT                       |                           |       |       |            |          |  Q1,01 | PCWC |          |
|   9 |          PX RECEIVE                       |                           |     1 |       |     3   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|  10 |           PX SEND HASH (BLOCK ADDRESS)    | :TQ10000                  |     1 |       |     3   (0)| 00:00:01 |  Q1,00 | S->P | HASH (BLOCK|
|  11 |            PX SELECTOR                    |                           |       |       |            |          |  Q1,00 | SCWC |          |
|* 12 |             INDEX RANGE SCAN              | IDX_SHOP_ORDER            |     1 |       |     3   (0)| 00:00:01 |  Q1,00 | SCWP |          |
|  13 |        TABLE ACCESS BY INDEX ROWID BATCHED| Z_SHOPORDER_OMORDER       |     1 |    52 |     1   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 14 |         INDEX RANGE SCAN                  | INDEX_SHOPORDER_BO        |     1 |       |     0   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 15 |       TABLE ACCESS BY INDEX ROWID BATCHED | TESTDATA               |    39 |  1287 |   182   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 16 |        INDEX RANGE SCAN                   | IDX$$_1064B0001           |   415 |       |     0   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 17 |      INDEX RANGE SCAN                     | OM_LINE_DATA_IDX01        |     1 |    21 |     0   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 18 |     VIEW PUSHED PREDICATE                 | V_QM_ORDER_MTR_DATA       |     1 |    61 |     5   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|  19 |      NESTED LOOPS                         |                           |    58 |  3016 |     5   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|  20 |       TABLE ACCESS BY INDEX ROWID BATCHED | TESTDATA               |    19 |   589 |     5   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 21 |        INDEX RANGE SCAN                   | IDX_TESTDATA_PORDER_NO |    19 |       |     3   (0)| 00:00:01 |  Q1,01 | PCWP |          |
|* 22 |       INDEX RANGE SCAN                    | OM_LINE_DATA_IDX01        |     3 |    63 |     0   (0)| 00:00:01 |  Q1,01 | PCWP |          |
----------------------------------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------12 - access("SO"."SHOP_ORDER"=SYS_OP_C2C(:2))14 - access("SO"."HANDLE"="SOO"."SHOPORDER_BO")15 - filter("A"."WHOLE_BACKLOG_CODE"=:1)16 - access("SOO"."PO"="TESTDATA"."SYS_QSMMIX_VCOL_5001" AND "A"."WHOLE_BACKLOG_SEQ"=TO_NUMBER("SOO"."STEP_ID"))17 - access("A"."PORDER_NO"="B"."PORDER_NO" AND "A"."MSC_LINE_NO"="B"."MSC_LINE_NO")filter(TO_NUMBER("B"."DEFAULT_FLAG")=0)18 - filter("B"."WHOLE_BACKLOG_SEQ"(+)="A"."WHOLE_BACKLOG_SEQ"-1)21 - access("A"."PORDER_NO"="A"."PORDER_NO")22 - access("B"."PORDER_NO"="A"."PORDER_NO" AND "A"."MSC_LINE_NO"="B"."MSC_LINE_NO")filter("A"."PORDER_NO"="B"."PORDER_NO" AND TO_NUMBER("B"."DEFAULT_FLAG")=0)

5、添加索引后,查看SQL執行效率已經提升,單次SQL執行的讀取數據庫從16W下降到50個。

SQL> create index test.IDX$$_1064B0001 on test.TESTDATA(SYS_OP_C2C("PORDER_NO")) online;Index created.SQL> SQL> SQL> SQL>  select sql_id,PLAN_HASH_VALUE,CHILD_number,EXECUTIONS,BUFFER_GETS/EXECUTIONS,ELAPSED_TIME/EXECUTIONS/1000 from v$sql where sql_id='bh0f095aumxth';SQL_ID        PLAN_HASH_VALUE CHILD_NUMBER EXECUTIONS BUFFER_GETS/EXECUTIONS ELAPSED_TIME/EXECUTIONS/1000
------------- --------------- ------------ ---------- ---------------------- ----------------------------
bh0f095aumxth      3442512347            0       7104              166868.53                   909.808189
bh0f095aumxth      3442512347            1       2266             167586.396                   929.766665
新的執行計劃:
SQL> /SQL_ID        PLAN_HASH_VALUE CHILD_NUMBER EXECUTIONS BUFFER_GETS/EXECUTIONS ELAPSED_TIME/EXECUTIONS/1000
------------- --------------- ------------ ---------- ---------------------- ----------------------------
bh0f095aumxth      1882491329            0         60             51.9166667                   3.27771667

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77768.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【鋰電池SOH估計】RF隨機森林鋰電池健康狀態估計,鋰電池SOH估計(Matlab完整源碼和數據)

目錄 效果一覽程序獲取程序內容代碼分享研究內容基于隨機森林(RF)的鋰電池健康狀態(SOH)估計算法研究摘要1. 引言2. 鋰電池SOH評估框架3. 實驗與結果分析4. 未來研究方向6. 結論效果一覽 程序獲取 獲取方式一:文章頂部資源處直接下載:【鋰電池SOH估計】RF隨機森林鋰電池…

安全高效兩不誤,這款安全數據擺渡系統支持8種傳輸協議

安全高效兩不誤&#xff01;這款安全數據擺渡系統支持8種傳輸協議 傳統的安全數據擺渡系統主要包括物理介質拷貝&#xff08;如光盤、U盤&#xff09;、網閘、光閘、防火墻文件交換模塊等&#xff0c;這些安全數據擺渡系統和傳輸方式在傳輸協議支持及功能實現上各有優劣勢。 …

(51單片機)LCD顯示溫度(DS18B20教程)(LCD1602教程)(延時函數教程)(單總線教程)

演示視頻&#xff1a; LCD顯示溫度 源代碼 如上圖將9個文放在Keli5 中即可&#xff0c;然后燒錄在單片機中就行了 燒錄軟件用的是STC-ISP&#xff0c;不知道怎么安裝的可以去看江科大的視頻&#xff1a; 【51單片機入門教程-2020版 程序全程純手打 從零開始入門】https://www.…

【愚公系列】《Python網絡爬蟲從入門到精通》063-項目實戰電商數據偵探(主窗體的數據展示)

&#x1f31f;【技術大咖愚公搬代碼&#xff1a;全棧專家的成長之路&#xff0c;你關注的寶藏博主在這里&#xff01;】&#x1f31f; &#x1f4e3;開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主&#xff01; &#x1f…

日志分析工具快速統計電商系統單位時間內的請求總數

一、常用日志分析工具及操作步驟 ?ELK Stack(Elasticsearch + Logstash + Kibana)?核心操作? 日志收集?:通過Logstash配置日志輸入(如Nginx日志文件),使用grok插件解析日志格式。 數據存儲?:將解析后的日志存入Elasticsearch,利用其分布式搜索能力快速索引數據。…

Win10一體機(MES電腦設置上電自動開機)

找個鍵盤&#xff0c;帶線的那種&#xff0c;插到電腦上&#xff0c;電腦開機&#xff1b;連續點按F11&#xff1b;通過↑↓鍵選擇Enter Setup 然后回車&#xff1b; 選擇 smart settings &#xff1b; 選擇 Restore AC Power Loss By IO 回車&#xff1b; 將prower off 改為…

crontab 定時備份 mysql 數據庫

1、使用 mysqldump 命令備份數據 1.1 備份全部數據庫的數據和結構 mysqldump -uroot -p123456 -A > /data/backup/db.sql1.2 備份全部數據庫的結構&#xff08;加 -d 參數&#xff09; mysqldump -uroot -p123456 -A -d > /data/backup/db.sql1.3 備份全部數據庫的數據…

【Git】branch合并分支

在 Git 中&#xff0c;將分支合并到 main 分支是一個常見的操作。以下是詳細的步驟和說明&#xff0c;幫助你完成這個過程。 1. 確保你在正確的分支上 首先&#xff0c;你需要確保當前所在的分支是 main 分支&#xff08;或者你要合并到的目標分支&#xff09;。 檢查當前分支…

基于Python+Pytest實現自動化測試(全棧實戰指南)

目錄 第一篇&#xff1a;基礎篇 第1章 自動化測試概述 1.1 什么是自動化測試 第2章 環境搭建與工具鏈配置 2.1 Python環境安裝&#xff08;Windows/macOS/Linux&#xff09; 2.2 虛擬環境管理 2.3 Pytest基礎配置&#xff08;pytest.ini&#xff09; 第3章 Pytest核心語…

什么是CRM系統,它的作用是什么?CRM全面指南

CRM&#xff08;Customer Relationship Management&#xff0c;客戶關系管理&#xff09;系統是一種專門用于集中管理客戶信息、優化銷售流程、提升客戶滿意度、支持精準營銷、驅動數據分析決策、加強跨部門協同、提升客戶生命周期價值的業務系統工具。其中&#xff0c;優化銷售…

紛析云開源財務軟件:助力企業實現數字化自主權

在數字化轉型浪潮中&#xff0c;企業財務管理面臨高成本、低靈活性、數據孤島等痛點。紛析云開源財務軟件&#xff08;項目地址&#xff1a;https://gitee.com/shenxji/fxy&#xff09;憑借其開源基因與模塊化設計&#xff0c;為企業提供了一條“低成本、高可控”的數字化路徑。…

飛搭系列 | 組件增加標記,提升用戶體驗

前言 Preface 飛搭低代碼平臺&#xff08;FeiDa&#xff0c;以下簡稱“飛搭”&#xff09;&#xff0c;為企業提供在線化、靈活的業務應用構建工具&#xff0c;支持高低代碼融合&#xff0c;助力企業低門檻、高效率和低成本地快速應對市場變化&#xff0c;加速復雜業務場景落地…

Docker 部署 Redis 緩存服務

Docker 部署 Redis 緩存服務 基于 Docker 部署 Redis 緩存服務一、拉取 Redis 鏡像二、運行 Redis 容器三、運行命令參數詳解四、查看容器運行狀態 基于 Docker 部署 Redis 緩存服務 一、拉取 Redis 鏡像 確保 Docker 環境已正確安裝并運行&#xff0c;打開終端執行以下命令拉…

yarn的介紹與操作,yarn和npm的選擇

&#x1f9f6; 一、Yarn 是什么&#xff1f; Yarn 是由 Facebook&#xff08;Meta&#xff09;開發的 JavaScript 包管理工具&#xff0c;用于替代 npm&#xff0c;解決它在早期版本中存在的一些問題。 ? Yarn 的優勢&#xff08;v1.x&#xff09;&#xff1a; &#x1f4e…

vivado XMP使用

vivado XMP使用 文章目錄 vivado XMP使用前言一、xpm_cdc_async_rst二、XPM_CDC_ARRAY_SINGLE三、XPM_CDC_PULSE四、 XPM_CDC_SINGLE五、 xpm_cdc_sync_rst總結 前言 使用XMP做跨時鐘域&#xff0c;方便的是官方認證&#xff0c;好用且不會爆時序問題&#xff0c;懶得寫 set fl…

P3416-圖論-法1.BFS / 法2.Floyd

這道題雖然標簽有floyd但是直接bfs也能過 其實事實證明還是bfs快&#xff0c;因為bfs只需要遍歷特定的點&#xff0c;但是floyd需要考慮遍歷所有可能的中介點 法1.BFS 用字典存儲每個點所能普及的范圍&#xff0c;然后用對每個點bfs進行拓展 nint(input())temp[]#xmax0;yma…

科普動畫短視頻制作:角色塑造的魅力法則

寶子們&#xff0c;在科普動畫短視頻的世界里&#xff0c;角色塑造可是讓作品出彩的關鍵&#xff01;今天就來和大家嘮嘮那些超實用的角色塑造法則&#xff0c;還會給大家推薦一款超好用的工具哦~ 一、獨特外形&#xff0c;吸睛第一步 在科普動畫短視頻制作中&#xff0c;角色…

代理模式(Proxy Pattern)詳解:以延遲加載圖片為例

在日常開發中&#xff0c;是否遇到過以下問題&#xff1a; “程序啟動時圖片太多&#xff0c;加載太慢&#xff01;” “用戶還沒看到圖片就已經開始加載了&#xff0c;性能浪費&#xff01;” 此時&#xff0c;代理模式&#xff08;Proxy Pattern&#xff09;便派上了用場。本…

C++學習筆記(三十六)——STL之排序算法

一、STL 算法 C的STL&#xff08;Standard Template Library&#xff09; 提供了一組高效、通用的算法&#xff0c;這些算法適用于各種容器&#xff08;如 vector、list、set、map&#xff09;。 這些算法主要位于 <algorithm> 和 <numeric> 頭文件中。 通用性&a…

Java基于SpringBoot的企業車輛管理系統,附源碼+文檔說明

博主介紹&#xff1a;?Java老徐、7年大廠程序員經歷。全網粉絲12w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&…