当前位置: 首页 > news >正文

一个KADB测试实践

  • 测试结果

本文档描述xxxx测试中6个典型测试场景的测试结果及背景,旨在对不同数据量,不同存储方式,不同优化器三者的组合优化进行探索,进而为未来的类似测试提供组合优化参考。

数据插入(500万)

5进程批量插入(500万)

单表增量与数据合并去重(1000万)

简单查询(3亿数据)

综合统计(3亿数据)

排序过滤(3亿数据)

xxx

18s

25s

28s

0.049s

41s

144s

金仓

31.808s

36.998s

19.888s

0.463s

8.496s

37.311s

         经测试发现在目前的测试数据量和计算实例部署的情况下,大多数场景使用pg优化器+heap表+索引的方式得到比AO表+9级zlib压缩+GPORA的组合更好的测试结果。

         在简单查询模式测试(三个in查询子嵌套)的测试场景,使用heap表+索引+GPORCA得到比pg优化器更好的测试结果

         思考:选用heap或者ao表和数据量,部署的计算实例及查询语句条件相关,目前没有探索到一个选择定量标准,需要在更多的测试环境中验证

  • 测试背景
  1. 测试数据量

tb_mz_sfmxb_source_r:25401708,行存

tb_mz_sfmxb_p_r:304820496,行存按字段sfjssj月分区表

tb_mz_ghmxb:24000000,行存

tb_dic_wd_yljgzd:2000w,行存,复制分布

tb_dic_wd_wsxzjgzdb:2000w,行存,复制分布

  1. 测试环境

cpu:arm 16c

内存:128GB

磁盘:1T SSD

三个虚拟机节点,每个节点部署12个计算实例

  1. 资源测试结果

gpcheckperf -f /home/mppadmin/hostfile -r N -D -d /dbdata

====================

==  RESULT 2025-02-22T16:21:24.741047

====================

Netperf bisection bandwidth test

mdw -> sdw1 = 984.920000

sdw2 -> mdw = 894.770000

sdw1 -> mdw = 851.700000

mdw -> sdw2 = 985.110000

Summary:

sum = 3716.50 MB/sec

min = 851.70 MB/sec

max = 985.11 MB/sec

avg = 929.13 MB/sec

median = 984.92 MB/sec

gpcheckperf -f /home/mppadmin/hostfile -d /dbdata -r ds -D -v -S 256GB

====================

==  RESULT 2025-02-22T16:30:31.592169

====================

 disk write avg time (sec): 152.18

 disk write tot bytes: 824633720832

 disk write tot bandwidth (MB/s): 5167.87

 disk write min bandwidth (MB/s): 1712.91 [ mdw]

 disk write max bandwidth (MB/s): 1731.35 [sdw1]

 -- per host bandwidth --

    disk write bandwidth (MB/s): 1712.91 [ mdw]

    disk write bandwidth (MB/s): 1731.35 [sdw1]

    disk write bandwidth (MB/s): 1723.61 [sdw2]

 disk read avg time (sec): 292.12

 disk read tot bytes: 824633720832

 disk read tot bandwidth (MB/s): 2694.91

 disk read min bandwidth (MB/s): 860.84 [ mdw]

 disk read max bandwidth (MB/s): 929.59 [sdw1]

 -- per host bandwidth --

    disk read bandwidth (MB/s): 860.84 [ mdw]

    disk read bandwidth (MB/s): 929.59 [sdw1]

    disk read bandwidth (MB/s): 904.48 [sdw2]

 stream tot bandwidth (MB/s): 28555.80

 stream min bandwidth (MB/s): 8279.00 [sdw2]

 stream max bandwidth (MB/s): 10142.00 [sdw1]

 -- per host bandwidth --

    stream bandwidth (MB/s): 10134.80 [ mdw]

    stream bandwidth (MB/s): 10142.00 [sdw1

  • 测试场景及SQL

测试共6个场景,各个场景sql如下(后缀’_c’表示列存表,‘_r’表示行存表,’_p’为分区表),除特别注明默认优化器使用pg

  1. 批量数据插入测试

INSERT INTO tb_mz_sfmxb_500_c select * from tb_mz_sfmxb_source_r limit 5000000;

  1. 多进程批量数据插入测试

INSERT INTO CENYLFW.tb_mz_sfmxb_500_bf_r select * from CENYLFW.tb_mz_sfmxb_source_r limit 5000000;

  1. 单表增量数据与历史数据去重合并测试

Insert  into tb_mz_sfmxb_union_1000_r  select  yljgdm,sfmxid from (select yljgdm,sfmxid,row_number() over(partition by  yljgdm,sfmxid order by yljgdm,sfmxid desc) row_num from (select  yljgdm,sfmxid,jlgxsj from tb_mz_sfmxb_1000_r a

union all

select  yljgdm,sfmxid,jlgxsj  from tb_mz_sfmxb_p where SFJSSJ>='20220101' and SFJSSJ<'20220211') c

group by  yljgdm,sfmxid) d

where row_num=1 ;

  1. 简单模式测试

使用GPORA优化器

set optimizer to on;

select * from tb_mz_sfmxb_p_r where brwyid in (select pid from tb_his_grbsxx where daid in (select daid from tb_chss_grjbxx where sfzh='16b550deef4679c4faff44901310b676'));

  1. 统计测试

select to_char(a.sfjssj,'yyyy') f_year,

                     extract(quarter from a.sfjssj) f_quarter,

                     to_char(a.sfjssj,'yyyymm') f_month,

                     to_char(a.sfjssj,'yyyy')||extract(week from now()) f_week,

                     to_char(a.sfjssj,'yyyymm') f_day,

                     qh.sjjgid f_sjqh,

                     jg.xnxzqhdm f_qxqh,

                     jg.yljgid f_jg_id,

                     substr(jg.wsjglbdm, 1, 4) f_jg_lx,

                     jg.jglsgxdm f_jg_lsgxdm,

                     a.kdksptdm f_ks,

                     a.kdysid f_ys_id,

                     a.kdysbh f_ys_gh,

                     a.kdysxm f_ys_mc,

                     sum(case

                           when a.tfbz = '2' then

                            -abs(mxxmssje)

                           else

                            abs(mxxmssje)

                  end) as ylsr,

                     sum(case

                         when a.tfbz = '2' and

                coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

                 coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) as ylsr_zy,

                     sum(case

                           when a.tfbz = '2' and

                 coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

                coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) as ylsr_xy,

                     sum(case

                           when a.tfbz = '2' then

                            -abs(mxxmssje)

                           else

                            abs(mxxmssje)

                         end) as mzylsr,

                     sum(case

                           when a.tfbz = '2' and

               coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

               coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) as mzylsr_zy,

                     sum(case

                           when a.tfbz = '2' and

               coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

               coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) as mzylsr_xy,

                     0 as zyylsr,

                     0 as zyylsr_zy,

                     0 as zyylsr_xy,

                     sum(case

            when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '03' then

                            -abs(mxxmssje)

          when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '03' then

                            abs(mxxmssje)

                         end) zlsr,

                     sum(case

          when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '03' and

                 coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

           when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '03' and

            coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) zlsr_zy,

                     sum(case

           when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '03' and

                                coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

           when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '03' and

          coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) zlsr_xy,

                     sum(case

          when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '03' then

                            -abs(mxxmssje)

          when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '03' then

                            abs(mxxmssje)

                         end) mzzlsr,

                     sum(case

          when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '03' and

          coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

          when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '03' and

          coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) mzzlsr_zy,

                     sum(case

         when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '03' and

         coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

         when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '03' and

         coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) mzzlsr_xy,

                     0 zyzlsr,

                     0 zyzlsr_zy,

                     0 zyzlsr_xy,

                     sum(case

          when a.tfbz = '2' and a.fysrglbm in ('01', '02', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

                   a.fysrglbm in ('01', '02', '03') then

                            abs(mxxmssje)

                         end) ypsr,

                     sum(case

           when a.tfbz = '2' and a.fysrglbm in ('01', '02', '03') and

           coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

                  a.fysrglbm in ('01', '02', '03') and

                coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) ypsr_zy,

                     sum(case

          when a.tfbz = '2' and a.fysrglbm in ('01', '02', '03') and

         coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

                  a.fysrglbm in ('01', '02', '03') and

         coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) ypsr_xy,

                     sum(case

          when a.tfbz = '2' and a.fysrglbm in ('01', '02', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

            a.fysrglbm in ('01', '02', '03') then

                            abs(mxxmssje)

                         end) mzypsr,

                     sum(case

         when a.tfbz = '2' and a.fysrglbm in ('01', '02', '03') and

         coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

        a.fysrglbm in ('01', '02', '03') and

         coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) mzypsr_zy,

                     sum(case

          when a.tfbz = '2' and a.fysrglbm in ('01', '02', '03') and

           coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

                           when a.tfbz <> '2' and

                   a.fysrglbm in ('01', '02', '03') and

                coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) mzypsr_xy,

                     0 zyypsr,

                     0 zyypsr_zy,

                     0 zyypsr_xy,

                     sum(case

        when a.tfbz = '2' and a.fysrglbm = '05' then

                            -abs(mxxmssje)

         when a.tfbz <> '2' and a.fysrglbm = '05' then

                            abs(mxxmssje)

                         end) mzjcsr,

                     sum(case

          when a.tfbz = '2' and a.fysrglbm = '05' and

           coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

             when a.tfbz <> '2' and a.fysrglbm = '05' and

             coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) mzjcsr_zy,

                     sum(case

              when a.tfbz = '2' and a.fysrglbm = '05' and

              coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

              when a.tfbz <> '2' and a.fysrglbm = '05' and

            coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) mzjcsr_xy,

                     sum(case

         when a.tfbz = '2' and a.fysrglbm = '08' then

                            -abs(mxxmssje)

        when a.tfbz <> '2' and a.fysrglbm = '08' then

                            abs(mxxmssje)

                         end) mzzhilsr,

                     sum(case

              when a.tfbz = '2' and a.fysrglbm = '08' and

               coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

              when a.tfbz <> '2' and a.fysrglbm = '08' and

             coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) mzzhilsr_zy,

                     sum(case

               when a.tfbz = '2' and a.fysrglbm = '08' and

                coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

               when a.tfbz <> '2' and a.fysrglbm = '08' and

               coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) mzzhilsr_xy,

                     0 zyjcsr,

                     0 zyjcsr_zy,

                     0 zyjcsr_xy,

                     0 zyzhilsr,

                     0 zyzhilsr_zy,

                     0 zyzhilsr_xy,

                     0 zycwsr,

                     0 zycwsr_zy,

                     0 zycwsr_xy,

                     sum(case

               when a.tfbz = '2' and a.fysrglbm = '0301' then

                            -abs(mxxmssje)

               when a.tfbz <> '2' and a.fysrglbm = '0301' then

                            abs(mxxmssje)

                         end) mzghsr,

                     sum(case

              when a.tfbz = '2' and a.fysrglbm = '0301' and

              coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

              when a.tfbz <> '2' and a.fysrglbm = '0301' and

               coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) mzghsr_zy,

                     sum(case

               when a.tfbz = '2' and a.fysrglbm = '0301' and

               coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

               when a.tfbz <> '2' and a.fysrglbm = '0301' and

                coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) mzghsr_xy,

                     sum(case

                 when a.tfbz = '2' and a.fysrglbm = '04' then

                            -abs(mxxmssje)

                  when a.tfbz <> '2' and a.fysrglbm = '04' then

                            abs(mxxmssje)

                         end) mzzcsr,

                     sum(case

             when a.tfbz = '2' and a.fysrglbm = '04' and

              coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

                when a.tfbz <> '2' and a.fysrglbm = '04' and

                 coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) mzzcsr_zy,

                     sum(case

                when a.tfbz = '2' and a.fysrglbm = '04' and

               coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

                   when a.tfbz <> '2' and a.fysrglbm = '04' and

                  coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) mzzcsr_xy,

                     sum(case

                when a.tfbz = '2' and a.fysrglbm = '09' then

                            -abs(mxxmssje)

                when a.tfbz <> '2' and a.fysrglbm = '09' then

                            abs(mxxmssje)

                         end) mzsssr,

                     sum(case

                when a.tfbz = '2' and a.fysrglbm = '06' then

                            -abs(mxxmssje)

                  when a.tfbz <> '2' and a.fysrglbm = '06' then

                            abs(mxxmssje)

                         end) mzhysr,

                     sum(case

          when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '99' then

                            -abs(mxxmssje)

          when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '99' then

                            abs(mxxmssje)

                         end) mzqtsr,

                     0 zysssr,

                     0 zyhysr,

                     0 zyqtsr,

                     0 zyhlsr,

                     0 zyhlsr_zy,

                     0 zyhlsr_xy,

                     0 zyzcsr,

                     0 zyzcsr_zy,

                     0 zyzcsr_xy,

                     sum(case

          when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '90' then

                            -abs(mxxmssje)

           when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '90' then

                            abs(mxxmssje)

                         end) as clfsr,

                     sum(case

           when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '90' and

          coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

          when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '90' and

            coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) as clfsr_xy,

                     sum(case

          when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '90' and

          coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

           when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '90' and

           coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) as clfsr_zy,

                     sum(case

           when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '90' then

                            -abs(mxxmssje)

           when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '90' then

                            abs(mxxmssje)

                         end) as mzclfsr,

                     0 as zyclfsr,

                     sum(case

           when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '90' and

           coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            -abs(mxxmssje)

           when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '90' and

          coalesce(b.lcyxlxbm, '01') in ('01', '03') then

                            abs(mxxmssje)

                         end) as mzclfsr_xy,

                     sum(case

       when a.tfbz = '2' and substr(a.fysrglbm, 1, 2) = '90' and

              coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            -abs(mxxmssje)

      when a.tfbz <> '2' and substr(a.fysrglbm, 1, 2) = '90' and

        coalesce(b.lcyxlxbm, '01') not in ('01', '03') then

                            abs(mxxmssje)

                         end) as mzclfsr_zy,

                     0 as zyclfsr_xy,

                     0 as zyclfsr_zy

                from tb_mz_sfmxb_p_r a

                 inner join (select t.ysksptdm,

                                 t.ysksptmc,

                                 t.ghysgh,

                                 t.ghysxm,

                                 t.yljgdm,

                                 t.jzlsh,

                                 t.ysid,

                                 t.lcyxlxbm

                            from tb_mz_ghmxb t

                          ) b

                  on a.yljgdm = b.yljgdm

                 and a.jzlsh = b.jzlsh

               inner join tb_dic_wd_yljgzd jg

                  on a.yljgdm= jg.yljgdm

               inner join tb_dic_wd_wsxzjgzdb qh

                  on jg.xnxzqhdm = qh.xzqhdm

               where a.sfjssj >='20220101'

                 and a.sfjssj <'20220201'

               group by to_char(a.sfjssj,'yyyy') ,

                     extract(quarter from a.sfjssj) ,

                     to_char(a.sfjssj,'yyyymm') ,

                     to_char(a.sfjssj,'yyyy')||extract(week from now()),

                     to_char(a.sfjssj,'yyyymm'),

                        qh.sjjgid,

                        jg.xnxzqhdm,

                        jg.yljgid,

                        jg.wsjglbdm,

                        jg.jglsgxdm,

                        a.kdksptdm,

                        a.kdysid,

                        a.kdysbh,

                        a.kdysxm;

  1. 排序过滤取数测试

insert into tb_mz_sfmxb_500_sort(BRWYID,YLJGDMID,YLJGDM,JZLSH,SFMXID,BTFMXID,TFBZ,SFCJBM,YZMXID,FYSRGLBM,FYFSSJ,SYJSID,SFJSSJ,SFXMBZBM,MXXMBM,MXXMMC,MXXMDW,XMFLBM,XMFLMC,MXXMDJ,MXXMSL,MXXMYSJE,MXXMSSJE,RKBZ,YLYL1,YLYL2,XGBZ,JLGXSJ,KDKSID,KDKSMC,KDKSPTID,KDKSPTDM,KDKSPTMC,KDYSID,KDYSBH,KDYSXM,ZXKSID,ZXKSBM,ZXKSMC,ZXKSPTID,ZXKSPTDM,ZXKSPTMC,ZXRYID,ZXRYBH,ZXRYXM,SFXMLBBM,KDKSBM,FYSRGLMC)

select BRWYID,YLJGDMID,YLJGDM,JZLSH,SFMXID,BTFMXID,TFBZ,SFCJBM,YZMXID,FYSRGLBM,FYFSSJ,SYJSID,SFJSSJ,SFXMBZBM,MXXMBM,MXXMMC,MXXMDW,XMFLBM,XMFLMC,MXXMDJ,MXXMSL,MXXMYSJE,MXXMSSJE,RKBZ,YLYL1,YLYL2,XGBZ,JLGXSJ,KDKSID,KDKSMC,KDKSPTID,KDKSPTDM,KDKSPTMC,KDYSID,KDYSBH,KDYSXM,ZXKSID,ZXKSBM,ZXKSMC,ZXKSPTID,ZXKSPTDM,ZXKSPTMC,ZXRYID,ZXRYBH,ZXRYXM,SFXMLBBM,KDKSBM,FYSRGLMC

from (

SELECT  BRWYID,YLJGDMID,YLJGDM,JZLSH,SFMXID,BTFMXID,TFBZ,SFCJBM,YZMXID,FYSRGLBM,FYFSSJ,SYJSID,SFJSSJ,SFXMBZBM,MXXMBM,MXXMMC,MXXMDW,XMFLBM,XMFLMC,MXXMDJ,MXXMSL,MXXMYSJE,MXXMSSJE,RKBZ,YLYL1,YLYL2,XGBZ,JLGXSJ,KDKSID,KDKSMC,KDKSPTID,KDKSPTDM,KDKSPTMC,KDYSID,KDYSBH,KDYSXM,ZXKSID,ZXKSBM,ZXKSMC,ZXKSPTID,ZXKSPTDM,ZXKSPTMC,ZXRYID,ZXRYBH,ZXRYXM,SFXMLBBM,KDKSBM,FYSRGLMC ,row_number() over(partition by  yljgdm,sfmxid order by jlgxsj desc) row_num from ( SELECT  * from tb_mz_sfmxb_p_r a where a.sfjssj>='2022-01-01'

                    and a.sfjssj<'2022-02-06'

   ) max GROUP BY  BRWYID,YLJGDMID,YLJGDM,JZLSH,SFMXID,BTFMXID,TFBZ,SFCJBM,YZMXID,FYSRGLBM,FYFSSJ,SYJSID,SFJSSJ,SFXMBZBM,MXXMBM,MXXMMC,MXXMDW,XMFLBM,XMFLMC,MXXMDJ,MXXMSL,MXXMYSJE,MXXMSSJE,RKBZ,YLYL1,YLYL2,XGBZ,JLGXSJ,KDKSID,KDKSMC,KDKSPTID,KDKSPTDM,KDKSPTMC,KDYSID,KDYSBH,KDYSXM,ZXKSID,ZXKSBM,ZXKSMC,ZXKSPTID,ZXKSPTDM,ZXKSPTMC,ZXRYID,ZXRYBH,ZXRYXM,SFXMLBBM,KDKSBM,FYSRGLMC

     ) s where row_num=1 ;

相关文章:

一个KADB测试实践

测试结果 本文档描述xxxx测试中6个典型测试场景的测试结果及背景&#xff0c;旨在对不同数据量&#xff0c;不同存储方式&#xff0c;不同优化器三者的组合优化进行探索&#xff0c;进而为未来的类似测试提供组合优化参考。 数据插入&#xff08;500万&#xff09; 5进程批量…...

dockerSDK-Go语言实现

前情提要 本文基于开发一个在线代码运行平台的项目需求上&#xff0c;所以需要挂载目录以达到获得执行文件的目的。 步骤1 首先在docker-compose 文件中&#xff0c;当前容器一定要跟宿主机的套接字进行挂载 version: 3.8 services: code-runner-api: build: context: . d…...

使用excel.EasyExcel实现导出有自定义样式模板的excel数据文件,粘贴即用!!!

客户要求导出的excel文件是有好看格式的&#xff0c;当然本文举例模板文件比较简单&#xff0c;内容丰富的模板可以自行设置&#xff0c;话不多说&#xff0c;第一步设置一个"好看"的excel文件模板 上面要注意的地方是{.变量名} &#xff0c;这里的变量名对应的就是…...

C++ string的模拟实现

Hello!!大家早上中午晚上好&#xff0c;昨天复习了string的使用&#xff0c;今天来模拟实现一下string&#xff01;&#xff01;&#xff01; 一、string的框架搭建 1.1首先我们需要一个string的头文件用来做变量、函数、类等声明&#xff1b;再需要一个test文件来做测试,还需…...

Spring AI Alibaba ChatClient使用

一、ChatClient简介 Chat Client&#xff1a;https://java2ai.com/docs/1.0.0-M5.1/tutorials/chat-client/ 1、ChatClient 简介 ChatClient 提供了与 AI 模型通信的 Fluent API&#xff0c;它支持同步和反应式&#xff08;Reactive&#xff09;编程模型。与 ChatModel、Messag…...

算法及数据结构系列 - 二分查找

系列文章目录 算法及数据结构系列 - BFS算法 文章目录 二分查找框架思路经典题型二分查找寻找左侧边界寻找右侧边界 刷题875. 爱吃香蕉的珂珂1011. 在 D 天内送达包裹的能力392. 判断子序列 二分查找 框架思路 int binarySearch(int[] nums, int target) {int left 0, righ…...

回归任务训练--MNIST全连接神经网络(Mnist_NN)

import torch import numpy as np import logging from torch.utils.data import TensorDataset, DataLoader from torch.utils.data import DataLoader# 配置日志 logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s)# 定义 loss_batch…...

SvelteKit 最新中文文档教程(8)—— 部署 Node 服务端

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …...

【Linux】VMware17 安装 Ubuntu24.04 虚拟机

目录 安装教程 一、下载 Ubuntu 桌面版iso映像 二、安装 VMware 三、安装 Ubuntu 桌面版 VMware 创建虚拟机 挂载 Ubuntu ISO 安装 Ubuntu 系统 安装教程 一、下载 Ubuntu 桌面版iso映像 链接来自 清华大学开源软件镜像站 ISO文件地址&#xff1a;ubuntu-24.04.2-des…...

Python functools 模块的 @lru_cache 装饰器介绍

functools.lru_cache 是 Python 标准库 functools 模块中的一个装饰器&#xff0c;用于实现简单的缓存机制。它通过缓存函数的返回值来提高函数的执行效率&#xff0c;特别是对于那些被多次调用且参数相同的函数。 LRU 缓存机制 LRU 代表 Least Recently Used&#xff0c;即最…...

JavaScript基础-节点操作

在Web开发中&#xff0c;动态地修改网页内容是提升用户体验的重要手段之一。通过JavaScript操作DOM&#xff08;文档对象模型&#xff09;中的节点&#xff0c;我们可以轻松地实现这一目标。本文将介绍JavaScript中关于节点操作的基础知识&#xff0c;涵盖创建新节点、插入节点…...

【数据分享】2000—2024年我国乡镇的逐月归一化植被指数(NDVI)数据(Shp/Excel格式)

之前我们分享过2000—2024年我国省市县三级逐月归一化植被指数&#xff08;NDVI&#xff09;数据&#xff0c;该数据是基于NASA定期发布的MOD13A3数据集中的月度NDVI栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;计算得出。很多小伙伴拿到数据后反馈是否可以处理出…...

Linux中基本命令

目录 ls pwd cd touch mkdir rm cp mv cat less head tail find grep ls 其实大部分命令都是可执行的文件&#xff0c;但有一些命令比如Shell内置命令&#xff0c;它没有对应的独立可执行文件&#xff0c;而是由Shell直接解释执行的。 功能&#xff1a;显示当前目…...

【时时三省】(C语言基础)习题2 scanf函数

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 用下面的scanf函数输入数据&#xff0c;使a 3&#xff0c;b 7&#xff0c;x 8.5&#xff0c;y 71.82&#xff0c;c1 A&#xff0c;c2 x在键盘上应如何输入? 分析第一个 scanf 函数&…...

文件相关函数的总结与记忆

1.字符的输入输出 char ch getchar();//不需要传递参数 putchar(a)putc、getc与fputc、fgetc一致 //必须用int接受&#xff0c;因为返回int类型&#xff0c;char因为编译器不同而可能为无符号和有符号 int ch if( (ch getchar() ) ! EOF) 2.行的输入输出 也可以用于二进制…...

爱普生SG2016CAN晶振优势和多领域应用

在当今数字化时代&#xff0c;从前沿的科技产品到日常的生活电器&#xff0c;电子设备无处不在&#xff0c;而晶振作为为这些设备提供稳定时钟信号的关键元件&#xff0c;其性能优劣直接影响着设备的整体表现。爱普生 SG2016CAN 晶振&#xff0c;以其卓越的性能和广泛的适用性&…...

MySQL身份验证的auth_socket插件

在Ubuntu 20.04 LTS上&#xff0c;MySQL 8.0默认使用auth_socket插件进行身份验证&#xff0c;可能存在意想不到的情况。 一、auth_socket插件 在使用sudo mysql或通过sudo切换用户后执行任何MySQL命令时&#xff0c;不需要输入密码或错误密码都可以正常登入mysql数据库&…...

人工智能之数学基础:高斯消元法求解线性方程组

本文重点 前面我们已经学习过了矩阵,以及矩阵的一系列含义,相信此时此刻在你的眼中矩阵已经不是一个简单的东西了,它是线性代数中的函数。将线性方程组中的系数组成一个矩阵,就可以通过这个矩阵来求解方程组的解了,本文介绍高斯消元法求解线性方程组。 线性方程组的矩阵…...

使用BootStrap 3的原创的模态框组件,没法弹出!估计是原创的bug

最近在给客户开发一个CRM系统&#xff0c;其中用到了BOOTSTRAP的模态框。版本是3。由于是刚开始用该框架。所以在正式部署到项目中前&#xff0c;需要测试一下&#xff0c;找到框架中的如下部分。需要说明的是。我用的asp.net mvc框架开发。测试也是在asp.net mvc环境下。 复制…...

【Linux】交叉编译2

一、文章背景 疑惑 官方提供的SDK包的结构如下&#xff1a; hugohugo-virtual-machine:~$ tree -L 2 SDK SDK ├── environment-setup-aarch64-poky-linux ├── site-config-aarch64-poky-linux ├── sysroots │ ├── aarch64-poky-linux │ ├── aarch64-poky-li…...

C++基础 [十二] - 继承与派生

目录 前言 什么是继承 继承的概念 继承的定义 基类与派生类对象的赋值转换 继承的作用域 派生类中的默认成员函数 默认成员函数的调用 构造函数与析构函数 拷贝构造 赋值运算符重载 显示成员函数的调用 构造函数 拷贝构造 赋值运算符重载 析构函数 继承与…...

uniapp小程序,输入框限制输入(正整数、小数后几位)

<uv-input inputAlign"right" type"number" v-model"quantity" placeholder"请输入单价"border"none" input"e > handleInput(e, 2)"/>const quantity ref() const handleInput (e, decimals) >{//…...

KnowGPT知识图谱整合

KnowGPT是由香港理工大学研究团队开发的一种黑盒知识注入框架&#xff0c;旨在通过外部知识图谱&#xff08;KGs&#xff09;增强大型语言模型&#xff08;LLMs&#xff09;在专业领域的问答能力。以下是详细介绍&#xff1a; 一、定义与核心功能 KnowGPT是一种通过API将知识图…...

深入理解MySQL中的MVCC机制

目录 1. MVCC的基本概念 2. MVCC的工作原理 2.1 数据版本的管理 2.1.1 记录的格式 2.1.2 Undo Log的作用 2.2 事务的可见性 3. Read View的作用与实现 3.1 Read View的组成 3.2 Read View的可见性判断规则 3.3 Read View的创建时机 4. Undo Log版本链 4.1 Undo Log…...

基于springboot的在线文档管理系统(026)

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;在线文档管理当然也不能排除在外。在线文档管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&am…...

【MVCC的前世今生】

一、MVCC的前世今生 MVCC 一个让爪哇开发闻风丧胆的词&#xff0c;因为面试必问&#xff0c;既然大家都知道这个问题是必问的&#xff0c;那就看谁理解的透彻了。 在数据库系统的发展历程中&#xff0c;锁机制曾是处理并发的唯一选择。传统的行级锁虽然能保证数据一致性&#x…...

初阶数据结构(C语言实现)——6.1插入排序详解(思路图解+代码实现)

目录 1 插入排序基本思想&#xff1a;2 直接插入2.1 直接插入排序思想&#xff1a;2.2 直接插入排序代码实现&#xff1a;2.2.1 单趟直接插入排序实现2.2.2 整体直接插入排序实现 3 希尔排序( 缩小增量排序 )3.1希尔排序( 缩小增量排序 )思想3.2 希尔排序代码实现3.2.1单趟排序…...

JAVA 中的 HashSet 工作原理

‌1. 底层数据结构‌ ‌依赖 HashMap 存储元素‌&#xff1a; HashSet 内部维护了一个 HashMap 实例&#xff0c;元素作为 HashMap 的 ‌Key‌ 存储&#xff0c;而所有的 ‌Value‌ 统一指向一个静态的 PRESENT 对象&#xff08;占位符&#xff09;。 // HashSet 源码片段 pri…...

mysql连接池

本文主要探讨mysql连接池的实现。 readme *****************************************************mysql连接池 *****************************************************概述&#xff1a;高并发情况下&#xff0c;大量TCP三次握手、MySQL Server连接认证、MySQL Server关闭连…...

领码科技:在低代码技术浪潮中的分享与探索

前言&#xff1a; 25年的职业生涯&#xff0c;赋予了我深厚的技术积累与实践经验。从武汉大学的工测系毕业&#xff0c;到央企副总工的职位&#xff0c;我始终站在IT浪潮的最前沿。然而&#xff0c;离开企业后&#xff0c;我并未停止前行的脚步。从2024年11月起&#xff0c;我选…...

闻所闻尽:穿透声音的寂静,照见生命的本真

在《楞严经》的梵音缭绕中&#xff0c;"闻所闻尽"四个字如晨钟暮鼓&#xff0c;叩击着每个修行者的心门。这个源自观世音菩萨耳根圆通法门的核心概念&#xff0c;既是佛门修行的次第指引&#xff0c;更蕴含着东方哲学对生命本质的终极叩问。当我们穿越时空的帷幕&…...

蓝桥与力扣刷题(蓝桥 三角形面积)

题目&#xff1a; 如上图所示。图中的所有小方格面积都是 1。 那么&#xff0c;图中的三角形面积应该是多少呢&#xff1f; 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 解题思路&#xff0b;代码&#xff1a; 代码&…...

Linux信号:一场内核与用户空间的暗战

在Linux系统的黑暗森林中&#xff0c;每个进程都是小心翼翼的猎人。当一束神秘的信号光划过天际&#xff0c;内核瞬间变身信号调度大师&#xff0c;在进程的生死簿上书写着命运。这场跨越用户空间与内核态的博弈&#xff0c;远比表面看到的更加惊心动魄。 一、 信号诞生的量子…...

Spring Boot 异步返回对象深度解析

前言 在现代高并发、高响应的应用场景中&#xff0c;Spring Boot 的异步处理能力是提升系统吞吐量和用户体验的关键技术之一。无论是实时数据推送、大文件传输&#xff0c;还是复杂异步任务调度&#xff0c;Spring Boot 提供了多种灵活的异步处理机制以满足不同需求。本文将从…...

Android Compose 基础布局之 Box 和 Stack 源码深度剖析(九)

Android Compose 基础布局之 Box 和 Stack 源码深度剖析 一、引言 1.1 Android 开发中布局的重要性 在 Android 应用开发里&#xff0c;布局是构建用户界面&#xff08;UI&#xff09;的关键环节。良好的布局设计能够提升用户体验&#xff0c;使应用界面更加美观、易用且具有…...

【强化学习】Reward Model(奖励模型)详细介绍

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…...

UE5材质法线强度控制节点FlattenNormal

连法 FlattenNormal内部是这样的 FlattenNormal的作用是用来调整法线强度 连上FlattenNormal后 拉高数值...

<项目> 主从Reactor模型的高并发服务器

目录 Reactor 概念 分类 单Reactor单线程 单Reactor多线程 多Reactor多线程 项目介绍 项目规划 模块关系 实现 TimerWheel -- 时间轮定时器 定时器系统调用 时间轮设计 通用类型Any Buffer Socket Channel Poller EventLoop&#xff08;核心&#xff09; eventfd 设计思路 …...

python爬虫解析器bs4,xpath,pquery

0x00 bs4 解析器的作用就是可以直接解析html页面&#xff0c;可以直接从网页中提取标签中的内容&#xff0c;而不用在使用正则表达式进行提起数据 import requests from bs4 import BeautifulSoup html_content <li id123><a hrefdfsdf>123</a>789</l…...

分析K8S中Node状态为`NotReady`问题

在Kubernetes&#xff08;k8s&#xff09;集群中&#xff0c;Node状态为NotReady通常意味着节点上存在某些问题&#xff0c;下面为你分析正常情况下节点应运行的容器以及解决NotReady状态的方法。 正常情况下Node节点应运行的容器 1. kubelet kubelet是节点上的核心组件&…...

【最后203篇系列】021 Q201再计划

忙了一周&#xff0c;终于到周末有时间再细细想这个问题了。这周还是不经意的弥补了kv硬盘存储库这个小空白的&#xff0c;这样也有助于构建更好的Q201。 计划是到6.1再发版&#xff0c;之所以留那么长时间&#xff0c;一方面是因为平时的确忙&#xff0c;另一方面则是可以有更…...

CA 机构如何防止中间人攻击

在现代互联网中&#xff0c;中间人攻击&#xff08;Man-in-the-Middle Attack&#xff0c;简称 MITM&#xff09;是一种常见的网络攻击方式&#xff0c;攻击者通过拦截和篡改通信双方的信息&#xff0c;进而窃取敏感数据或执行恶意操作。为了防止中间人攻击&#xff0c;证书颁发…...

CUL-CHMLFRP启动器 windows图形化客户端

CUL-CHMLFRP启动器 windows图形化客户端 基于v2 api开发的chmlfrp ui版本的第三方客户端 CUL原名CHMLFRP_UI CUL顾名思义为CHMLFRP-UI-Launcher 下载地址&#xff1a;https://cul.lanzoul.com/b00pzv3oyj 密码:ff50 下载解压运行即可&#xff08;仅支持win7以上版本&#xf…...

C语言基础08

内容提要 数组 排序算法&#xff1a;冒泡排序 二维数组 字符数组 数组 冒泡排序 排序思想&#xff08;向前冒泡&#xff09; 一次只排好一个数&#xff0c;针对n个数&#xff0c;最差情况需要n-1次就可以排好 每次排序假定第一个元素是最大或者最小&#xff0c;用第一个…...

基于javaweb的SpringBoot儿童爱心管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)

原文链接&#xff1a;从零开始的DeepSeek微调训练实战&#xff08;SFT&#xff09; 微调参考示例&#xff1a;由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…...

JavaScript |(五)DOM简介 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 笔记来源&#xff1a;在这位大佬的基础上添加了一些东西&#xff0c;欢迎大家支持原创&#xff0c;大佬太棒了&#xff1a;JavaScript |&#xff08;五&#xff09;DOM简介 | 尚硅谷JavaScript基础…...

模型整合-cherry studio+mysql_mcp_server服务配置

一、什么是MCP MCP&#xff08;Model Context Protocol&#xff09;是模型上下文协议&#xff0c;它允许大型语言模型&#xff08;LLM&#xff09;通过协议与外部工具或服务交互&#xff0c;动态获取实时数据或执行操作。简单来说&#xff0c;它让模型不再局限于静态知识库&…...

【QA】装饰模式在Qt中有哪些运用?

在Qt框架中&#xff0c;装饰模式&#xff08;Decorator Pattern&#xff09;主要通过继承或组合的方式实现&#xff0c;常见于IO设备扩展和图形渲染增强场景。以下是Qt原生实现的装饰模式典型案例&#xff1a; 一、QIODevice装饰体系&#xff08;继承方式&#xff09; 场景 …...

window 设置自动开启/关闭程序(分享)

打开计算机管理 winr 输入 compmgmt.msc 找到任务计划程序创建任务 设置开启任务 常规&#xff1a;添加名称与描述 触发器&#xff1a;新建触发时间与次数 操作&#xff1a;新建执行程序 添加任务对应的位置 以便修改 设置关闭任务 添加批处理文件&#xff0c;写完后吧 .…...