kettle组件-查询
生活随笔
收集整理的這篇文章主要介紹了
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
? 數據庫連接:所要連接的數據庫
? 模式名稱:一般選取用戶模式
?表名:所要查詢的表名
?是否使用緩存:指定是否使用數據庫緩存查詢結果。
? 緩存大小:指定緩存的大小。
? 從表中加載所有數據:選中該項,緩存將不被利用。
?查詢所需的關鍵字:
?? 表字段:表示所選中的表中的字段。
?? 比較操作符:對選中字段進行判斷。
?? 字段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
轉載于:https://www.cnblogs.com/zja001/p/10084478.html
總結
以上是生活随笔為你收集整理的kettle组件-查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现BX的内容加上123 并把和送到寄存
- 下一篇: 12月7日 第二冲刺周期个人站立会议内容