固定执行计划-使用coe_xfr_sql_profile

2024-01-26 23:40

本文主要是介绍固定执行计划-使用coe_xfr_sql_profile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、历史执行计划固定

历史的执行计划找到一个合理的执行计划进行绑定

1. 存在多个执行计划的语句,按照索引是比较合适的,FULL SCAN不合适

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor('4hpk08j31nm7y',null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |     2 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     1   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

SQL_ID  4hpk08j31nm7y, child number 1

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 3956160932

  

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |

|*  1 |  TABLE ACCESS FULL| EMP  |     6 |   228 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   1 - filter("DEPTNO"=30)

存在两个执行计划,使之后的SQL语句都走Plan hash value: 1404472509 处理模

2、运行coe_xfr_sql_profile脚本来绑定

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

sys@GULL> @coe_xfr_sql_profile.SQL

 

Parameter 1:

SQL_ID (required)

 

输入 1 的值:  4hpk08j31nm7y

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     1404472509        .002

     3956160932        .015

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  1404472509

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "4hpk08j31nm7y"

PLAN_HASH_VALUE: "1404472509"

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

on TARGET system in order to create a custom SQL Profile

with plan 1404472509 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

 

sys@GULL> @coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

sys@GULL> REM

sys@GULL> REM $Header: 215187.1 coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql 11.4.3.5 2016/06/20 carlos.sierra $

sys@GULL> REM

sys@GULL> REM Copyright (c) 2000-2011, Oracle Corporation. All rights reserved.

sys@GULL> REM

sys@GULL> REM AUTHOR

sys@GULL> REM   carlos.sierra@oracle.com

sys@GULL> REM

sys@GULL> REM SCRIPT

sys@GULL> REM   coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

sys@GULL> REM

sys@GULL> REM DESCRIPTION

sys@GULL> REM   This script is generated by coe_xfr_sql_profile.sql

sys@GULL> REM   It contains the SQL*Plus commands to create a custom

sys@GULL> REM   SQL Profile for SQL_ID 4hpk08j31nm7y based on plan hash

sys@GULL> REM   value 1404472509.

sys@GULL> REM   The custom SQL Profile to be created by this script

sys@GULL> REM   will affect plans for SQL commands with signature

sys@GULL> REM   matching the one for SQL Text below.

sys@GULL> REM   Review SQL Text and adjust accordingly.

sys@GULL> REM

sys@GULL> REM PARAMETERS

sys@GULL> REM   None.

sys@GULL> REM

sys@GULL> REM EXAMPLE

sys@GULL> REM   SQL> START coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql;

sys@GULL> REM

sys@GULL> REM NOTES

sys@GULL> REM   1. Should be run as SYSTEM or SYSDBA.

sys@GULL> REM   2. User must have CREATE ANY SQL PROFILE privilege.

sys@GULL> REM   3. SOURCE and TARGET systems can be the same or similar.

sys@GULL> REM   4. To drop this custom SQL Profile after it has been created:

sys@GULL> REM      EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('coe_4hpk08j31nm7y_1404472509');

sys@GULL> REM   5. Be aware that using DBMS_SQLTUNE requires a license

sys@GULL> REM      for the Oracle Tuning Pack.

sys@GULL> REM

sys@GULL> WHENEVER SQLERROR EXIT SQL.SQLCODE;

sys@GULL> REM

sys@GULL> VAR signature NUMBER;

sys@GULL> REM

sys@GULL> DECLARE

  2  sql_txt CLOB;

  3  h       SYS.SQLPROF_ATTR;

  BEGIN

  5  sql_txt := q'[

  6  select * from  scott.emp  where deptno=30

  7  ]';

  8  h := SYS.SQLPROF_ATTR(

  9  q'[BEGIN_OUTLINE_DATA]',

 10  q'[IGNORE_OPTIM_EMBEDDED_HINTS]',

 11  q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',

 12  q'[DB_VERSION('11.2.0.3')]',

 13  q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',

 14  q'[ALL_ROWS]',

 15  q'[OUTLINE_LEAF(@"SEL$1")]',

 16  q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',

 17  q'[END_OUTLINE_DATA]');

 18  :signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);

 19  DBMS_SQLTUNE.IMPORT_SQL_PROFILE (

 20  sql_text    => sql_txt,

 21  profile     => h,

 22  name        => 'coe_4hpk08j31nm7y_1404472509',

 23  description => 'coe 4hpk08j31nm7y 1404472509 '||:signature||'',

 24  category    => 'DEFAULT',

 25  validate    => TRUE,

 26  replace     => TRUE,

 27  force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );

 28  END;

 29  /

 

PL/SQL 过程已成功完成。

 

sys@GULL> WHENEVER SQLERROR CONTINUE

sys@GULL> SET ECHO OFF;

 

            SIGNATURE

---------------------

  7148830044791940844

 

 

... manual custom SQL Profile has been created

 

 

COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509 completed

执行COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509

3、再此重新执行语句

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 2

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

Note

-----

   - SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement

SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement,说明sql profile已经绑定上,执行计划已这个为最佳,为止绑定处理

 

二、自己来构造合理的执行计划

1、构造执行计划

以下例子中sql语句走的是全表扫描,没有走索引,构造一个走索引的语句,来替换全表扫描执行计划

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

alter session set optimizer_index_cost_adj=500

 

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 3956160932

  

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |

|*  1 |  TABLE ACCESS FULL| EMP  |     6 |   228 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   1 - filter("DEPTNO"=30)

执行现存在的coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

sys@GULL> @coe_xfr_sql_profile.SQL

 

Parameter 1:

SQL_ID (required)

 

输入 1 的值:  4hpk08j31nm7y

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     3956160932        .041

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  3956160932

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "4hpk08j31nm7y"

PLAN_HASH_VALUE: "3956160932 "

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

on TARGET system in order to create a custom SQL Profile

with plan 3956160932 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

查看构造SQL的走索引执行计划coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

select /*+index(emp index_emp_deptno)*/ * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  2hdyvqk9b09va, child number 0

-------------------------------------

select /*+index(emp index_emp_deptno)*/ * from  scott.emp  where

deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

查看次构造SQL的coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

SQL>@coe_xfr_sql_profile.SQL 2hdyvqk9b09va

 

Parameter 1:

SQL_ID (required)

 

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     1404472509        .001

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  1404472509

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "2hdyvqk9b09va"

PLAN_HASH_VALUE: "1404472509"

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql

on TARGET system in order to create a custom SQL Profile

with plan 1404472509 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

2、替换outline data

查看coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql信息,需要替换的是这段内容

复制代码

h := SYS.SQLPROF_ATTR(
q'[BEGIN_OUTLINE_DATA]',
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',
q'[DB_VERSION('11.2.0.3')]',
q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',
q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',
q'[ALL_ROWS]',
q'[OUTLINE_LEAF(@"SEL$1")]',
q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',
q'[END_OUTLINE_DATA]');

复制代码

把这个内容替换到coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 中

复制代码

h := SYS.SQLPROF_ATTR(
q'[BEGIN_OUTLINE_DATA]',
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',
q'[DB_VERSION('11.2.0.3')]',
q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',
q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',
q'[ALL_ROWS]',
q'[OUTLINE_LEAF(@"SEL$1")]',
q'[FULL(@"SEL$1" "EMP"@"SEL$1")]',
q'[END_OUTLINE_DATA]');

复制代码

这段信息后,执行coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 这个脚本

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

SQL>@coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

SQL>REM

SQL>REM $Header: 215187.1 coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 11.4.3.5 2016/06/20 carlos.sierra $

SQL>REM

SQL>REM Copyright (c) 2000-2011, Oracle Corporation. All rights reserved.

SQL>REM

SQL>REM AUTHOR

SQL>REM   carlos.sierra@oracle.com

SQL>REM

SQL>REM SCRIPT

SQL>REM   coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

SQL>REM

SQL>REM DESCRIPTION

SQL>REM   This script is generated by coe_xfr_sql_profile.sql

SQL>REM   It contains the SQL*Plus commands to create a custom

SQL>REM   SQL Profile for SQL_ID 4hpk08j31nm7y based on plan hash

SQL>REM   value 3956160932.

SQL>REM   The custom SQL Profile to be created by this script

SQL>REM   will affect plans for SQL commands with signature

SQL>REM   matching the one for SQL Text below.

SQL>REM   Review SQL Text and adjust accordingly.

SQL>REM

SQL>REM PARAMETERS

SQL>REM   None.

SQL>REM

SQL>REM EXAMPLE

SQL>REM   SQL> START coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql;

SQL>REM

SQL>REM NOTES

SQL>REM   1. Should be run as SYSTEM or SYSDBA.

SQL>REM   2. User must have CREATE ANY SQL PROFILE privilege.

SQL>REM   3. SOURCE and TARGET systems can be the same or similar.

SQL>REM   4. To drop this custom SQL Profile after it has been created:

SQL>REM  EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('coe_4hpk08j31nm7y_3956160932');

SQL>REM   5. Be aware that using DBMS_SQLTUNE requires a license

SQL>REM  for the Oracle Tuning Pack.

SQL>REM

SQL>WHENEVER SQLERROR EXIT SQL.SQLCODE;

SQL>REM

SQL>VAR signature NUMBER;

SQL>REM

SQL>DECLARE

  2  sql_txt CLOB;

  3  h       SYS.SQLPROF_ATTR;

  BEGIN

  5  sql_txt := q'[

  6  select * from  scott.emp  where deptno=30

  7  ]';

  8  h := SYS.SQLPROF_ATTR(

  9  q'[BEGIN_OUTLINE_DATA]',

 10  q'[IGNORE_OPTIM_EMBEDDED_HINTS]',

 11  q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',

 12  q'[DB_VERSION('11.2.0.3')]',

 13  q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',

 14  q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',

 15  q'[ALL_ROWS]',

 16  q'[OUTLINE_LEAF(@"SEL$1")]',

 17  q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',

 18  q'[END_OUTLINE_DATA]');

 19  :signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);

 20  DBMS_SQLTUNE.IMPORT_SQL_PROFILE (

 21  sql_text    => sql_txt,

 22  profile     => h,

 23  name        => 'coe_4hpk08j31nm7y_3956160932',

 24  description => 'coe 4hpk08j31nm7y 3956160932 '||:signature||'',

 25  category    => 'DEFAULT',

 26  validate    => TRUE,

 27  replace     => TRUE,

 28  force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );

 29  END;

 30  /

 

PL/SQL 过程已成功完成。

 

SQL>WHENEVER SQLERROR CONTINUE

SQL>SET ECHO OFF;

 

            SIGNATURE

---------------------

  7148830044791940844

 

 

... manual custom SQL Profile has been created

 

 

COE_XFR_SQL_PROFILE_4hpk08j31nm7y_3956160932 completed

3、再次语句查看执行计划

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

Note

-----

   - SQL profile coe_4hpk08j31nm7y_3956160932 used for this statement

偷梁换柱成功,固定执行so easy

提供脚本文件COE_XFR_SQL_PROFILE.SQL

 COE_XFR_SQL_PROFILE

参考《基于SQL的优化》

这篇关于固定执行计划-使用coe_xfr_sql_profile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/648413

相关文章

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.