自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從優(yōu)化達(dá)夢(mèng)執(zhí)行計(jì)劃輸出,談產(chǎn)品交互

原創(chuàng)
數(shù)據(jù)庫(kù)
近期,開始嘗試做些國(guó)產(chǎn)數(shù)據(jù)庫(kù)的評(píng)測(cè)工作,特別是與SQL相關(guān)的,也輸出幾篇文章。在這一過程中,對(duì)國(guó)產(chǎn)數(shù)據(jù)庫(kù)使用感覺還是存在不小優(yōu)化空間。這里以達(dá)夢(mèng)數(shù)據(jù)庫(kù)的執(zhí)行計(jì)劃輸出為例,談?wù)勛约簩?duì)產(chǎn)品交互優(yōu)化的一些看法。

近期,開始嘗試做些國(guó)產(chǎn)數(shù)據(jù)庫(kù)的評(píng)測(cè)工作,特別是與SQL相關(guān)的,也輸出幾篇文章。在這一過程中,對(duì)國(guó)產(chǎn)數(shù)據(jù)庫(kù)使用感覺還是存在不小優(yōu)化空間。這里以達(dá)夢(mèng)數(shù)據(jù)庫(kù)的執(zhí)行計(jì)劃輸出為例,談?wù)勛约簩?duì)產(chǎn)品交互優(yōu)化的一些看法。

1. 達(dá)夢(mèng)數(shù)據(jù)庫(kù)計(jì)劃輸出及優(yōu)化

(1)達(dá)夢(mèng)執(zhí)行計(jì)劃現(xiàn)狀

作為DBA最常用的功能,了解SQL語(yǔ)句的執(zhí)行計(jì)劃很重要。達(dá)夢(mèng)數(shù)據(jù)庫(kù)可通過多種方式來查看,常用的就是Explain命令。坦白講,第一次看到達(dá)夢(mèng)數(shù)據(jù)庫(kù)的執(zhí)行計(jì)劃,是讓我感到比較郁悶的,因?yàn)樗c其他數(shù)據(jù)庫(kù)的執(zhí)行計(jì)劃還是存在很大差別。如下圖,就是一條簡(jiǎn)單的執(zhí)行計(jì)劃示例。

當(dāng)看到這一輸出結(jié)果,在不參考文檔的情況下,有很多是不太理解的。

  • 沒有標(biāo)題欄,每部分內(nèi)容不知含義,如方括號(hào)中一串?dāng)?shù)字
  • 有操作符部分,但只看名稱部分勉強(qiáng)能猜出來,有的完全猜不出
  • 操作符后面應(yīng)該是每種操作符的參數(shù),操作符不同參數(shù)而已,各參數(shù)還有輸入值等
  • 整體縮進(jìn)式結(jié)構(gòu),應(yīng)該跟其他數(shù)據(jù)庫(kù)類似,可反應(yīng)操作符執(zhí)行順序

達(dá)夢(mèng)也有其他圖形化工具,情況會(huì)好一些。如在達(dá)夢(mèng)最近推出的SQLark百靈中,通過分欄顯示清晰了很多,當(dāng)然還是存在不知含義等問題。

于是,只能借助達(dá)夢(mèng)文檔,來回查看操作符含義、參數(shù)含義等等。如下圖是達(dá)夢(mèng)官方提供的執(zhí)行計(jì)劃操作文檔,寫的還是挺清楚的。當(dāng)然,往復(fù)切換查看文檔和執(zhí)行計(jì)劃的過程還是令人不悅,是不是能有更好的一些方法呢...

(2)達(dá)夢(mèng)執(zhí)行計(jì)劃優(yōu)化

有了上面這些問題,自己還是想動(dòng)手嘗試改變下。近幾年動(dòng)手少了,趕鴨子上架拿 Python 試著改造下。這里面突出有幾個(gè)問題想要優(yōu)化下:一是輸出格式的問題,可能多年受Oracle、MySQL的影響,還是覺得表格形式的比較習(xí)慣;二是對(duì)操作符不熟悉,因此最好能一屏顯示執(zhí)行計(jì)劃及對(duì)應(yīng)操作符的含義,方便上下對(duì)照來看;三是執(zhí)行計(jì)劃還會(huì)受到如統(tǒng)計(jì)信息、內(nèi)核參數(shù)等影響,有可能都顯示出來。好了,有了需求可以動(dòng)手了...

首先,第一個(gè)問題就是搞環(huán)境,開始以為很簡(jiǎn)單的事。用Docker起了個(gè)達(dá)夢(mèng)實(shí)例,然后在本地裝Python連達(dá)夢(mèng)庫(kù)。之前用cx_Oracle、MySQLdb、PyMySQL連接Oracle、MySQL都是很簡(jiǎn)單,但參照達(dá)夢(mèng)官方文檔使用Python連接,遇到了一堆的問題;前后試了一小時(shí),放棄...選擇用比較挫的方式,直接程序中調(diào)用達(dá)夢(mèng)DiSQL命令行工具方式。然后,就是如何將達(dá)夢(mèng)的知識(shí)庫(kù)(執(zhí)行計(jì)劃操作符含義)與程序產(chǎn)生互動(dòng)。達(dá)夢(mèng)的官方文檔不錯(cuò),寫了個(gè)簡(jiǎn)單的爬蟲將信息導(dǎo)出,存儲(chǔ)在程序中作為元信息使用;剩下就是做些字符串處理,規(guī)格化一下。第三,就是字符終端輸出,這個(gè)有點(diǎn)基礎(chǔ)調(diào)用現(xiàn)成包就可以。于是有了下面這個(gè)小原型。

調(diào)用后輸出結(jié)果如下:

頭部是一些數(shù)據(jù)庫(kù)、用戶、語(yǔ)句信息,中間部分是表格化的執(zhí)行計(jì)劃和遇到的操作符及參數(shù)含義說明,后面是語(yǔ)句中使用到的表及索引的統(tǒng)計(jì)信息情況,整體感覺舒服了很多。換一個(gè)復(fù)雜點(diǎn)的例子。

2. 產(chǎn)品交互優(yōu)化的幾點(diǎn)看法

通過上面優(yōu)化的小例子,其實(shí)也反應(yīng)出在產(chǎn)品交互上、功能設(shè)計(jì)上值得關(guān)注的幾點(diǎn)。

(1)選擇用戶“最熟悉”方式

了解、熟悉一款產(chǎn)品代價(jià)是挺高的,作為基礎(chǔ)軟件的數(shù)據(jù)庫(kù)更是如此。如何讓用戶快速了解、上手你的產(chǎn)品是很關(guān)鍵的。曾跟某國(guó)產(chǎn)數(shù)據(jù)庫(kù)廠商聊天,對(duì)方談到自己是可以全方位對(duì)標(biāo)某國(guó)際大廠數(shù)據(jù)庫(kù)的,那么讓用戶快速了解你就很簡(jiǎn)單了。我的建議就是列一個(gè)表格,將兩個(gè)數(shù)據(jù)庫(kù)從設(shè)計(jì)、開發(fā)、運(yùn)維等多角度分列出來,然后再細(xì)分子項(xiàng)逐一對(duì)比。用戶可以從中很快速地了解你的產(chǎn)品能做什么、能做到什么程度。上面是從大的方面來看,那小的方面也是如此。如本文談到的執(zhí)行計(jì)劃輸出,就可以以一種人們更為熟悉的方式來交互。例如 Oracle 的執(zhí)行計(jì)劃輸出,就給我們立了一個(gè)很好的標(biāo)桿,特別是其內(nèi)部包含的豐富信息,可以極大方便 DBA 的日常工作。當(dāng)一名 Oracle DBA 轉(zhuǎn)型時(shí),就感到很舒適,之前的很多積累還可以復(fù)用。

(2)知道用戶“最需要”什么

作為一名產(chǎn)品經(jīng)理,了解用戶最需要什么是基礎(chǔ);但就是這個(gè)最基礎(chǔ)的問題,往往沒有得到足夠的關(guān)注。有時(shí)產(chǎn)品的很多功能是產(chǎn)品經(jīng)理意淫出來的,而用戶最樸素的基礎(chǔ)想法并沒有得到關(guān)注。這就需要產(chǎn)品經(jīng)理真正是站在客戶的角度、站在用戶一線,才能觀察體會(huì)出來。最直接的方式就是當(dāng)一天的“客戶”,使用自己的產(chǎn)品干干一線工作,然后就能理解用戶的吐槽了。近些年我也會(huì)參與到不少?gòu)S商的評(píng)測(cè)工作,經(jīng)常會(huì)發(fā)現(xiàn)交互性的問題,對(duì)方感到很詫異時(shí),我只能苦笑道“沒當(dāng)過DBA吧”。舉個(gè)小例子,你了解一款數(shù)據(jù)庫(kù)的備份功能,你會(huì)考慮哪些問題:物理備份、邏輯備份怎么做?如何做增量備份?如何查看備份集?如何查看備份進(jìn)度?失敗了怎么辦,等等不一而足。這些都是來自一線工作中會(huì)遇到的。上例中,我最需要的就是快速理解操作符含義,通過幫助形式就可以方便理解。

(3)引導(dǎo)用戶“需關(guān)注”什么

除了用戶需要什么之外,作為對(duì)產(chǎn)品更為了解的一方,產(chǎn)品還應(yīng)有意識(shí)地提供更多更有價(jià)值的內(nèi)容,方便用戶對(duì)這個(gè)功能的理解和使用。用戶初次接觸產(chǎn)品,很難對(duì)產(chǎn)品有全面的了解,知道往往都是片面的一些點(diǎn),如果通過功能構(gòu)建將功能關(guān)聯(lián)起來,讓用戶有意識(shí)地去關(guān)注,往往會(huì)取的不錯(cuò)的效果。這相當(dāng)于把一個(gè)一個(gè)的知識(shí)點(diǎn),連接成一張網(wǎng),讓用戶有了更為全面的理解。如上面例子中,顯示執(zhí)行計(jì)劃是用戶的初衷,但其本質(zhì)的需求是理解為什么SQL走了這樣的執(zhí)行計(jì)劃,那么可能影響、改變執(zhí)行計(jì)劃的因素都應(yīng)該是用戶需要了解的。例如:統(tǒng)計(jì)信息是不是完整的?數(shù)據(jù)是不是有傾斜?使用綁定變量了嗎?等等,這些問題都是需要用戶關(guān)注的。

責(zé)任編輯:姜華 來源: 韓鋒頻道
相關(guān)推薦

2011-09-14 17:03:17

數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃解析

2021-03-17 09:35:51

MySQL數(shù)據(jù)庫(kù)explain

2015-04-22 14:17:45

SQL SERVERMSSQL SERVE緩沖區(qū)

2023-09-21 10:55:51

MysqlSQL語(yǔ)句

2021-05-28 10:46:36

MySQL執(zhí)行計(jì)劃

2022-08-08 08:03:44

MySQL數(shù)據(jù)庫(kù)CBO

2009-11-13 16:28:02

Oracle生成執(zhí)行計(jì)

2024-09-12 15:16:14

2012-02-02 10:07:12

諾基亞交互設(shè)計(jì)

2014-04-16 14:36:03

2020-05-21 10:02:51

Explain SQL優(yōu)化

2010-04-16 09:27:18

Ocacle執(zhí)行計(jì)劃

2020-09-15 08:44:57

MySQL慢日志SQL

2021-04-24 12:01:08

MySQL數(shù)據(jù)庫(kù)Mysql執(zhí)行計(jì)劃

2021-02-20 08:40:19

HiveExplain底層

2009-11-18 17:05:47

捕獲Oracle SQ

2022-08-15 15:09:26

SQL數(shù)據(jù)庫(kù)MySQL

2009-11-10 16:00:05

Oracle執(zhí)行計(jì)劃

2021-09-07 10:43:25

EverDB分布式執(zhí)行

2011-08-18 09:19:19

SQL Server的SQL查詢優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)