zoukankan      html  css  js  c++  java
  • kettle组件-查询

    1:数据库查询   
       数据库连接:所要连接的数据库
       模式名称:一般选取用户模式
       表名:所要查询的表名
       是否使用缓存:指定是否使用数据库缓存查询结果。
       缓存大小:指定缓存的大小。
       从表中加载所有数据:选中该项,缓存将不被利用。
     查询所需的关键字:
        表字段:表示所选中的表中的字段。
        比较操作符:对选中字段进行判断。
        字段1/2:流中的其他(表字段中可选的字段在该选项中不能选择)字段。
     查询表返回的值:
        查询表返回的字段,类型,可以通过新名称对返回字段该名称。
       排序:指定排序方式。
     “表输入”和“数据库查询”不同点:
       表输入:从数据库表里读取信息。
       数据库查询:使用字段值在数据库里查询值。
       数据库查询这个组件一般是用在我们已经使用表输入查询到一条或几条记录后再查询其他表数据,在查询到主表的某条记录后
       自动返回子表中匹配的记录。
       使用数据库查询的查询原理是按照左外连接方式进行查询,查询表为驱动表。
     “流查询”和“数据库查询”的区别:
       流查询步骤只能进行等值查询,数据库查询步骤可以进行非等值查询。
       流查询在查询之前把数据加载到内存里,数据库查询可以选择是否把数据加载到内存。
       进行等值查询时,数据库查询步骤如果选中了全部缓存,性能接近但仍不如流查询的性能。
       进行等值查询时,数据库查询步骤如果没选中全部缓存,性能较低,每次查询都要向数据库发送一个sql请求。
       进行非等值查询时,数据库查询即使选中了全部缓存,性能也较低,没有索引在内存中通过循环查询。
       数据库查询的缓存适用于多次查询返回同一个查询结果的情况(集中式),多次查询返回不同的查询结果(分散式),使用缓存反而会降低性能。
    数据库缓存层:
       常见的缓存形式 :
        1.文件缓存 (为了避免I/O开销,尽量使用内存缓存)
        2.内存缓存
     为什么要使用缓存:
        缓存数据是为了让客户端很少甚至不访问数据库服务器进行的数据查询,高并发下,能最大程度降低对数据库服务器的访问压力
      一般的数据请求:
        用户请求->数据查询->连接数据库服务器并查询数据->将数据缓存起来(缓存方式: HTML , 内存 , [JSON, 序列化数据不做考虑])->显示给客户端
      用户再次请求或者新用户访问->数据查询->直接从缓存中获取数据->显示给客户端
     缓存需要考虑的方面
        1.缓存方式的选择: 对I/O开销比较小的方式, 比如缓存到内存
        2.缓存场景的选择: 一些不经常修改的数据适合做缓存
        3. 缓存数据的实时性:
        4. 缓存数据的稳定性:
     Mysql的查询缓存
        1.启用mysql查询缓存:
         (1) query_cache_type : 0代表使用查询缓存 1表示始终使用查询缓存 2表示按需使用查询缓存
         (2) 如果选择1也就是始终缓存时,如果某一条sql语句不想使用缓存,可以这样
           select SQL_NO_CACHE * from student where condition;
         (3) 如果选择2也就是按需使用查询缓存时,可以这样
          select SQL_CACHE *from student where condition;
        2. query_cache_size 配置项
         默认情况下,query_cache_size为0,也就是表示为查询缓存预留的内存为0,表示无法使用查询缓存
         (1) 可以通过 set GLOBAL query_cache_size= 来临时设置
         (2) 也可以在配置文件中,直接设置query_cache_size的大小
      3. 查询缓存可以看做是SQL文本和查询结果的映射
         第二次查询的sql和第一次查询的sql完全相同,则会使用缓存
        4. 我们可以通过show status like 'Qcache_hits'; 命令来查看命中次数
        5. 在mysql数据缓存中,除了sql语句改变会使缓存无法使用,当表的结构或数据发生改变时,查询缓存中的数据也不再有效
          总结:如果写的频率较高,mysql查询缓存意义就不大,如果数据基本不发生改变,mysql查询缓存还是比较有用的
        6.清理缓存
               FLUSH QUERY CACHE; //清理查询里的缓存内存碎片
                    RESET QUERY CACHE; //从查询缓存中移出所有查询
                    FLUSH TABLES; //关闭所有打开的表,同时该操作将会清空查询缓存中的内容
    2:数据库连接
       该步骤允许使用先前步骤的数据,运行一个数据库查询。
       数据库连接:所要连接的数据库。
       sql:查询的sql语句,可以指定查询参数,在sql中使用?代替,查询中?需要用该组件下方的使用的参数中的参数代替,而该网格
            中的字段以及类型来源于上一个步骤。
       返回的行数:0代表所有行,其他数字限制行的输出。
       外链接:若选中,则总会返回一个结果,就算查询脚本没有结果。
       替换变量:替换查询中的变量。
       参数:查询中使用的参数。
    参考网址:http://ju.outofmemory.cn/entry/108650
            https://blog.csdn.net/lan12334321234/article/details/70049471
            https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79274156
  • 相关阅读:
    字节码编程,Javassist篇四《通过字节码插桩监控方法采集运行时入参出参和异常信息》
    字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》
    字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
    字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》
    CPU瞒着内存竟干出这种事
    可怕!CPU竟成了黑客的帮凶!
    完了!CPU一味求快出事儿了!
    如果平行宇宙也有编程语言
    你离黑客的距离,就差这20个神器了
    哈希表哪家强?几大编程语言吵起来了!
  • 原文地址:https://www.cnblogs.com/zja001/p/10084478.html
Copyright © 2011-2022 走看看