Xׯdh8ddlZddlZddlmZddlmZddlmZddlm Z m Z m Z m Z ddl mZmZddlmZddlmZd Zgd Zgd Zgd Zgd ZGddejZGddejZGddejZGddejZGddejZ GddejZ!GddejZ"GddejZ#Gddej$Z%Gd d!ejZ&Gd"d#eeZ'dS)$N) ChangeCounter)Context) ImageFigure)PSConfiguration PSTimerTypePSObjectPSActor)log_info log_error)nc)WbAdminPSBaseTabiz)wait/io/file/%wait/io/table/%wait/lock/table/sql/handler statement/%idle)rrrrr)events_statements_currentevents_transactions_currentglobal_instrumentationthread_instrumentationstatements_digest)rrrrc2eZdZdZdZdZdZdZdZdS) BigSwitchc tj|||||d|_d|_d|_| ttj d|_g|_dD]}g}dD]\}ttj d|d|d}||]|j|t#|fdS) Ndefault)NNzps_switcher_legend.png)fullycustomrdisabled)offhooveron ps_switcher__z.png)mforms PyDrawBox__init__ set_managedset_release_on_add set_instancestatehovering_state mouse_pos updateImagerAppgetget_resource_pathlegend state_imagesappendtuple)selfitemiconsr*icons 1..\modules\wb_admin_perfschema_instrumentation.pyr&zBigSwitch.__init__@sO!!$'''  !!! $ "# !&*.."2"2"D"DE]"^"^__ > ; ;DE0 # #"6:>>#3#3#E#E#EaeaeaeglglglFm#n#noo T""""   $ $dE%LL%9 : : : :  ; ;ct|}d|_d}|jD]\}\} } } | } || jz |jjz dz } ||jkr| } n}|jdrp|jdrc|jd| krR|jd| | jzkr9|jd|kr(|jd|| jzkr|dkr | } ||_| | || ||| jz }|j | | jzd|j ||j | | jz|jjzdz| |j jz |j |dS)Nrrd) rr+r2 get_widthwidth text_imager*r,heightmoverenderr1 get_height)r5crxywhcyyr*rr r!imagexxs r9repaintzBigSwitch.repaintYs BKK" (,(9   $E$CE..""U[04?3HHAMB """ 0t~a'8 0>!$r))dnQ.?"u{BR.R.RW[WefgWhlnWnWnswtBCDtEIKNSNZIZtZtZ_dhp_p_p"E*/D' JJr2    LLOOO %, BB R%+-q111 q!!! ek)DO,AACGIZIZ]a]h]oIoppp 1r:c<||_|dSN)r*set_needs_repaintr5r*s r9 set_statezBigSwitch.set_staters!       r:c@||f|_|dSrQ)r,rR)r5rGrHs r9 mouse_movezBigSwitch.mouse_movews%A      r:cL|jr||jdSdSrQ)r+callback)r5buttonrGrHs r9 mouse_clickzBigSwitch.mouse_click|s2   / MM$- . . . . . / /r:cvtjrEt tjd|_dSt tjd|_dS)Nzps_switcher_text_dark.pngzps_switcher_text_light.png)r$r.r/isDarkModeActiverr0rAr5s r9r-zBigSwitch.updateImages :>>   , , . . l)&*..*:*:*L*LMh*i*ijjDOOO)&*..*:*:*L*LMi*j*jkkDOOOr:N) __name__ __module__ __qualname__r&rOrTrVrZr-r:r9rr?ss;;;22!!! !!! ///lllllr:rc8eZdZdZdZdZdZdZdZdZ dS) EasySetupPagecTtj|d|||d|d||_tj |j d| dS)NF GNColorsChanged) r$Boxr&r'r( set_spacing set_paddingownerr add_observer updateColors create_ui)r5rks r9r&zEasySetupPage.__init__s D%(((  !!!    )+<=== r:c  |jd}|dkr"|jd}|dkrdS|jd}|dkr"|jd}|dkrdS|jjdd drt}t }nt }t}|jd d d d |Dzddd d|Dzd}|dkrg}g}g}| d|D]L}d|vr1| d|z| d|z7| |Mddd d|Dzg|z}ddd d|Dzg|z} |jd|| dz}|dkrdSdS#tj $rB} td | ztjd!d"| zd#d$d$Yd} ~ nd} ~ wwxYwdS)%NzJSELECT COUNT(*) FROM performance_schema.setup_consumers WHERE enabled='NO'rzySELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME NOT LIKE 'memory/%' AND (enabled='NO' OR timed='NO')rzKSELECT COUNT(*) FROM performance_schema.setup_consumers WHERE enabled='YES'z{SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE NAME NOT LIKE 'memory/%' AND (enabled='YES' OR timed='YES')rz SELECT sum(IF(zENABLED='NO' AND NAME IN (%s),cg|]}d|zSz'%s'ra.0rKs r9 z=EasySetupPage.check_instrumentation_level..sBaBaBaRS6A:BaBaBar:z, 1, 0)) + sum(IF(z"ENABLED='YES' AND NAME NOT IN (%s)cg|]}d|zSrtrarus r9rwz=EasySetupPage.check_instrumentation_level..sGfGfGfWXQR GfGfGfr:zA, 1, 0)) FROM performance_schema.setup_consumers z 'memory/%'%NAME LIKE '%s'zNAME NOT LIKE '%s' OR NAME IN (%s)cg|]}d|zSrtrarvis r9rwz=EasySetupPage.check_instrumentation_level..s=V=V=VQfqj=V=V=Vr:z AND zNAME NOT IN (%s)cg|]}d|zSrtrar~s r9rwz=EasySetupPage.check_instrumentation_level..sC\C\C\STFQJC\C\C\r:al SELECT sum(IF(ENABLED='NO' AND (%(cond)s), 1, 0)) + sum(IF(ENABLED='YES' AND (%(notcond)s), 1, 0)) + sum(IF(TIMED='NO' AND (%(cond)s), 1, 0)) + sum(IF(TIMED='YES' AND (%(notcond)s), 1, 0)) FROM performance_schema.setup_instruments )condnotcondrrz6MySQL error querying PS instrumentation/consumers: %s z,Check Performance Schema Configuration Statezg>gggg2ijjAAvv l+++$%%AQhh||$4q$8999}}%9A%=>>>>zz!}}}}kk>CHH=V=VRU=V=V=V4W4W#W"X[`"`aa||%7#((C\C\X[C\C\C\:]:]%]$^ag$ghhJ446 %(T:: 6;<<66$98{ j j j ORSS T T T   ' '(VYWZ[Y[]acegi j j j j j j j j jts&AH2AH2F(H22J8I>>JcBg}g}|D]4}d|vr|d|z||5ddddd|Dzg|zz}ddzdd |Dz}||gS) Nryrzz UPDATE performance_schema.setup_instruments SET ENABLED = IF(%s, 'YES', 'NO'), TIMED = ENABLED r{r|rrcg|]}d|zSrtrar~s r9rwz.s5N5N5NQfqj5N5N5Nr:zq UPDATE performance_schema.setup_consumers SET ENABLED = IF(%s, 'YES', 'NO') cg|]}d|zSrtrarus r9rwz.s(G(G(G!(G(G(Gr:)r3r)r5rrrrrisqlcsqls r9generate_updates_for_resetz(EasySetupPage.generate_updates_for_resets  Aaxx -12222 1  kk>CHH5N5N#5N5N5N,O,OOPSXXYY Z   #xx(G(GY(G(G(GHHI d|r:c |dkritjdddddtjkrdSddg}tjd n|d kr6d d g}tjd n|dkr|jj dddrt}t}nt}t}tjd|||}|D]9}td|z|jjj|d:|r2tjdn1tjd|jddS#t(j$rw}t-d|ztjd|ztjdd|zdddYd}~dSd}~wwxYw)NrzPerformance Warninga&While enabling all performance_schema instrumentation allows collecting a lot of information from MySQL, it will also impose a significant performance and memory overhead on it. Do not enable this option if your server is a production server under heavy load, unless you know what you're doing.zLeave UnchangedzEnable Everythingrz;UPDATE performance_schema.setup_consumers SET enabled='YES'zJUPDATE performance_schema.setup_instruments SET enabled='YES', timed='YES'z3Enabling Full Performance Schema Instrumentation...rz:UPDATE performance_schema.setup_consumers SET enabled='NO'zHUPDATE performance_schema.setup_instruments SET enabled='NO', timed='NO'z4Disabling Full Performance Schema Instrumentation...rrprqrzCResetting Performance Schema settings to default instrumentation...zExecuting %s... z#Changed Performance Schema Settingsz$Disabled Performance Schema SettingsFz-MySQL error toggling (%s) PS Instrumentation z5Error toggling Performance Schema Instrumentation: %sz)Toggle Performance Schema InstrumentationzMySQL Error: %sr)r$r show_warningResultOkr.r/set_status_textrkrrrrrrrr main_vieweditorexecuteManagementCommand rebuild_uirrr r)r5r*sqlrrsrs r9change_instrumentationz$EasySetupPage.change_instrumentations$ 6#001F2[]npCEGHHLRL[[[FTce   001fgggg*$$Sac   001ghhhh)##:,PPQRTUWXYY5"8K 4II"8K 4I   001vwww55k9MM K K,q0111 $+DDQJJJJ Y   001VWWWW   001WXXX J ! !% ( ( ( ( ({ 6 6 6 FJ K K K JNN   , ,-dgh-h i i i   ' '(S(9A(=(,b" 6 6 6 6 6 6 6 6 6 6s7G5F8G55I;A,I66I;ctj|_|jtjd||jddtjd}| tj | tj ||ddt|_|j|j_|jdd||jddtj}|tjd||ddtjd}| tj ||dddS) Nps_easysetup_logo.pngFTzPerformance Schemaizseparator_vertical.pngz The MySQL Performance Schema allows you to: - instrument MySQL to collect statistics and performance data - log collected events into tables, so they can be analyzed Use the switch above to change Performance Schema instrumentation or disable it.)r$ newImageBoxlogo set_imager.r/r0addnewLabelset_text_align MiddleCenter set_style VeryBigStyler switch_imagerrXset_size)r5labelrMs r9rnzEasySetupPage.create_uis&((  FJNN,,>>?VWWXXX E4((( 455 V0111 +,,, t$$$%KK%)%@" ""3,,, "E4000"$$  ((::;STTUUU t$$$!bcc V0111 t$$$$$r:c|}|jtj|dkrdnd|j|dS)Nrzps_easysetup_logo_enabled.pngr) rrrr$r.r/r0rrTrSs r9reloadzEasySetupPage.reload(s0022 FJNN,,>>bgkububu?^?^|STT U U U ##E*****r:c8|jdSrQ)rr-)r5namesenderinfos r9rmzEasySetupPage.updateColors-s %%'''''r:N) r^r_r`r&rrrrnrrmrar:r9rcrcs   :::z,%6%6%6R%%%0+++ (((((r:rcc4eZdZdZdZdZddZdZdZdS) SetupInstrumentsc.tj|d|||d|d||_||_| dSNFre) r$rhr&r'r(rirjrk_datarn)r5rkdatas r9r&zSetupInstruments.__init__1s D%(((  !!!     r:ctjd}|tj||ddd}tj|}||ddtjtj|_|jtj ddd|jtj ddd|jtj d dd|j ||jdd|j |j i|_||jjdS) Nz%Select Enabled Instrumentation PointsFTaAn instrument refers to a specific section of the MySQL code that has been enabled for monitoring. When an instrument is enabled and is executed on the server, it will generate events than can be used for monitoring. The top level elements on the table below represent the "Event Type" generated by the instrument. The enabled column indicates whether the events for the instrument are generated. The timed column indicates whether information about the event duration is recorded. InstrumentiEnabled2Timed)r$rr BoldStyler newTreeViewTreeAltRowColors _instruments add_columnIconStringColumnTypeTriCheckColumnType end_columnsset_cell_edited_callback cell_edited tag_models insert_nodesrr)r5l descriptionrs r9rnzSetupInstruments.create_ui<sT OC D D F$%%% E4      ,, t$$$".v/FGG $$V%@,PSUZ[[[ $$V%> 2tTTT $$V%>TRRR %%''' "D$/// 2243CDDD $*011111r:c4|j}t|D]}|d}|j}|D]v}d}d}|sj||krR||}| d|kr|}d}n|dz }|s||kR|sd}w|r1||D](} | \} } } | dkrdnd} | | | )dS) ` Reverts back any change on the UI that has not been committed to the database. /FrTr=Nenabledr<) r get_changeslistkeyssplitr root_nodecount get_child get_stringset_bool)r5changesr6tokensnodetokenfoundindexchildchangeattoldnewcolumns r9refreshzSetupInstruments.refreshZsR*((**(( / /DZZ__F$..00D #EDJJLL$8$8 NN511E''**e33$ $   #EDJJLL$8$8 D /%dm//F&,OS#s"%"2"2QQFMM&#....+ / /r:Nct|D](}d}|}|r>|}d||g}nj}|d||j|d||j | d|| d|z|ffd }|| |||j |<d||vr|||*dS) ze Inserts nodes based on the model which is an instance of PSInstrumentGroup. Nrr=r<rz%sc2|||SrQ)model_value_set_callback)attrvaluerr5s r9z/SetupInstruments.insert_nodes..st?\?\]achjn?o?or:_data_)rr add_childrget_tagradd_nodeset_intrtimed set_stringset_tagset_value_set_notificationrr)r5modelparentrrtagupdate_value_cbs` r9rzSetupInstruments.insert_nodeswsS %**,,'' 6 6EDC 4''))hh 0 0%899(1133 LLE%L0 1 1 1 LLE%L. / / / OOAu % % % LL $ $ $9=oooooO %L 3 3O D D D$).sd.I.I'RS*V^._._r:F) rr$ newCheckBoxset_textr set_activerradd_clicked_callbackrrr3r)r5 containerrrrrs` ` @r9create_dc_checkboxz&SetupDataCollection.create_dc_checkboxs  *''))G%'''!*%%%W%%%DJwqz2:;;;%%&_&_&_&_&_&_```%-wqz"  :T111/1$V,   ( / / 9 9 9  ht,,,r:Tctj|r'j|jdzdzjz}n j|}|t|j j  fdj <| ddS)Nperformance_schema__sizec0SrQr)rrr5sr9rz8SetupDataCollection.create_section_row..sd.I.I$PX.Y.Yr:FT)r$rrrrr rboolr!rrr" ui_fieldsr)r5r#elementrrecordsrcaptionrs` ` @r9create_section_rowz&SetupDataCollection.create_section_rows%''  /w/$/BWZ^B^ahBh2i2ooGGog.G'"""T']]+++DJt,4555%%&Y&Y&Y&Y&Y&YZZZ't ht,,,r:rcz|dkrX|}|rd||g}|d}d|}nZ|dkr|j||z}|j|}n6|j||z}|j||jd|zdzjz}||fS)Nr# rr&r')rr capitalizerrrr)r5 base_namervar_prefix_namevarrr-s r9get_var_name_and_labelz*SetupDataCollection.get_var_name_and_label s B;;C =hh;<<__S))Fhhv&&1133GG aZZ.')3Coe,GG.')3Cu-@UX[@[^e@e0f0llGG|r:c <tjtj}|r8|dkr|dnN|dkr|dn2|d|ddztjd}|d|d|r1|D]-}||| |d|.n||| |d }||| |d |||| |d || || |d d |j j d ddrS||j|j|j|dSdS)Nevents_waits_summaryzWait Events Summary file_summaryz File Summary %s Eventsr0Frr=r<Trp)r$newPanelTitledBoxPanel set_titler2newBoxrjrir$r6rrkrrr thread_checkrrr3)r5r#r3elementspanelvboxr+ current_ctrls r9create_sectionz"SetupDataCollection.create_section!s$ 566  G222 56666n,,/// OOK)CRC.*C*C*E*EE F F F}U##    c# c c''d.I.I'SUW`.a.abbbb c 2249T9TU^`a9b9bccL  # #D$*E*EiQR*S*SUa b b b  # #D$*E*EiQR*S*SUa b b b $ eT4((( : $ H HAq Q Q B   d/::<< = = =  !2 3 : :5 A A A A A  B Br:ctjd}|tj||dd|jjdddrd}nd}tj|}||dd||_|jjddd ry| || d d |_ tj d|_||jdd|jg|j |j <|jjdddrC| |j| d d |_g|j |j<tj d}|d |d |jjdddr,||d||d||d|jjdddr||d|j|dd|jjddds2||dgd||dddg|jjdddrcd}tj|}|j|dd| |j| dd dSdS)Nz5Select performance_schema Event Types to be CollectedFTrpr<r=aoPerformance Schema generates execution events only if a consumer for such events is active. A consumer is considered active if it is enabled and the consumers it depends on are active based on the next hierarchy: - Global Instrumentation is the top level consumer. - Thread Instrumentation and Statement Digest depend on Global Instrumentation. - The Current consumers for Statement, Stage and Wait events depend on Thread Instrumentation - The History and History Long consumers depend on it's associated Current consumer The options you toggle determine which of the performance_schema.events_* tables are fed with dataz[Performance Schema generates execution events only if a consumer for such events is active.rrr0rre statementsstageswaitsrq transactionsr8)by_thread_by_event_name by_event_name by_instancer9rNrOzDigesting normalizes statements in a way that permits grouping similar statements and collecting information about how often they occur. r)r$rrrrrkrr_SetupDataCollection__containerr$r6 global_checkrArrBrjrirG)r5rr desc_labelhboxdigest_description digest_labels r9rnzSetupDataCollection.create_uiCs{ OS T T F$%%% E4   : $ H HAq Q Q xKKxK_[11  UD)))   : $ H HAq Q Q I $ 7 7d>Y>YZrtv>w>w x xD  &}U33D  HHT%ud 3 3 37;7G6HD !2 3 : $ H HAq Q Q 9 $ 7 78H$JeJef~ACKDKD!E!ED 68D !2 3}T""   : $ H HAq Q Q 0   l 3 3 3   h / / / D'*** : $ H HAq Q Q 6   n 5 5 5 T5$///z(LLQPQSTUU X   &<>y>y>y z z z   n 6V W W W : $ H HAq Q Q l"n !?+=>>L   ud ; ; ;  # #D$4d6Q6QRegi6j6j k k k k k  l lr:c|j}t|D]}||d\}}}||jvrj|j|}|t |||jvr2|j|D]$}|t |%dS)rrN) rrrrrr!r)rr)r5rr6rrr item_ctrlcontrols r9rzSetupDataCollection.refreshs*((**(( 7 7D%dmA.OS#st~%% N40 $$T#YY/// 444#'#7 #B77++DII6666 7 7r:cld}|dkr|j}|r"|j||dSdS)Nthread)rBrr3)r5 parent_idrrs r9add_child_controlz%SetupDataCollection.add_child_controlsN  &F  7   ( / / 6 6 6 6 6 7 7r:rQ)T)r) r^r_r`r&rr$r.r6rGrnrr\rar:r9r r s4---:&,BBBBDDlDlDlL777*77777r:r ceZdZddZdZdS)ActorInfoDialogNc tj|d|d||_tjd}|d|dd}tj|}| |ddtj }|d| d| d | d |d tj|_| tjd dd dd dtj| |jdd d dtjtjztj|_| tjddd ddd tj| |jdd dd tjtjztjd}|d tj|_|jdtj|_|jd| |ddtj||j|j||dd|||dd|dS)NzMonitor Events for UserFrfzDefine the user/host for which performance schema will monitor for events. You can use the % to indicate any user and/or any hosts.Tr=r=r<rqr;zUser:rzHost:rCancel)r$Formr&r@ _validaterArjrirrnewTable set_row_countset_column_countset_column_spacingset_row_spacing newTextEntryuser HFillFlag HExpandFlaghost newButtonokr cancelradd_end_ok_cancel_buttonsadd_end set_contentrcenter)r5 validate_cbrEr-rtablebboxs r9r&zActorInfoDialog.__init__s T4((( 0111$}U##  M OG $ $ E4   !! ! A q!!!   ### a   '))  &/'400!Q1f>NOOO $)Q1a)9&:L)LMMM'))  &/'400!Q1f>NOOO $)Q1a)9&:L)LMMM}T"" "$$ &((  X&&& d###224$+NNN T5$'''  c3 r:c> d}||j|jrsd}|j}|j}|||}|||fStj d|ddd|s|ndS)NTFzUser/Host Definition ErrorOkr) run_modalrqrrrlget_string_valuerorer$r show_message)r5 cancelledrlroerrors r9runzActorInfoDialog.runs I~~dgt{33 e! y1133y1133tT22= $<'$112NPUW[]_acddd EM tr:rQr^r_r`r&rrar:r9r^r^s8....br:r^ceZdZddZdZdS)ObjectInfoDialogNc , tj|d|d||_||_tjd}|d|dd}tj |}| |ddtj }|d| d| d |d |d tj|_|jjdd d s5|jd |jdn|jgd| tj ddddddtj| |jdd ddtjtjztj|_| tj dddddd tj| |jdd dd tjtjztj|_| tj ddddd dtj| |jdd d dtjtjztjd}tj|_|jd|jjddds4|jd|jd| |jddtj|_ |j d| |j dd| |dddd tj!tjztjztjd}|d tj"|_#|j#dtj"|_$|j$d| |ddtj%&||j#|j$|'|dd|(||)dd|*dS)NzMonitor Events Database ObjectFrfr`zDefine the database objects which performance schema will monitor for events. You can use the % to indicate any schema and/or any object name.Tr=rprqr;r<TABLE)EVENTFUNCTION PROCEDURErTRIGGERzType:rzSchema:zName:r=rr<rrrarbi)+r$rdr&r@rkrerArjrirrrfrgrhrirj newSelectortyperradd_itemr add_itemsrmrnrkschemarrrr r!r VFillFlagrprqrrrrsrtrurrv) r5rkrwrEr-rrxchboxrys r9r&zObjectInfoDialog.__init__s T4((( 7888 $}U##  U OG $ $ E4   !! ! A q!!!   ### a   &(( z(LLQPQSTUU X I  w ' ' ' I ! !% ( ( ( ( I   V V V W W W &/'400!Q1f>NOOO $)Q1a)9&:L)LMMM)++  &/)T22Aq!Q@PQQQ $+q!Q6+;FNOOO $)Q1a)9&:L)LMMM d##)++  i(((z(LLQPQSTUU , L # #D ) ) ) L $ $U + + + $,d+++'))  G$$$ $*dD))) %Aq!V%5f6F%FvGY%YZZZ}T"" "$$ &((  X&&& d###224$+NNN T5$'''  c3 r:c d}||j|jrd}|j}|j}|j}|j}|j }| |||}||||||fStj d|ddd|s|ndS)NTFz Database Object Definition Errorr{r)r|rqrrrr}rrrrrrer$rr~)r5rrrrrrrs r9rzObjectInfoDialog.run>s I~~dgt{33 k! y11335577y1133,1133 --//tVT::= &$??$112TV[]acegijjj EM# $tr:rQrrar:r9rrs<NNNNbr:rcreZdZdZedZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdS)SetupFilteringc<tj|d|d|d||||_||_||_ | dSr) r$rhr&rirjr'r(rk_actors_objectsrn)r5rkactorsobjectss r9r&zSetupFiltering.__init__Ts D%(((    !!!    r:c|jjSrQ)rkrr]s r9rzSetupFiltering.target_versionbs z((r:ctjd}|d|tj|ddtj}|tj d| |||dd|S)NTreFzmini_notice.png) r$rArirrrrr.r/r0 set_tooltip)r5texttooltipboxrs r9make_description_boxz#SetupFiltering.make_description_boxfsmD!!  %%ud333    FJNN$$667HIIJJJ g 5$ r:c tjd}|tj||ddtjtj}|dtjd}| d| dtj tj tj z|_|jtjddd|jtjddd|j|j|j||jddtjd}| dd }d }||||ddtj|_|jd |j|j|jd||jddtj}|d ||j||dd||dd||||ddtjtj}|d tjd} | d| dtj tj tj z|_|jtjddd|jtjddd|jtjddd|jtjddd|jtjddd|j|j|j|j |j!| |jddtjd} | dd}d}| |||ddtj|_"|j"d |j"|j#|j"d| |j"ddtj} | d | |j$| | dd| | dd|| ||dd|%dS)Nz(Filter Users and Objects to be MonitoredFTUsersreUserHostzPerformance Schema allows defining filters to determine the connections for which data will be collected. New connections having a user@host matching an entry below will be enabled for monitoring.z.Use % to indicate either any user or any host.RemoveAddzDatabase ObjectsTyper>SchemarcObjectrrrzPerformance Schema allows defining filters to determine the objects for which data will be collected. Any schema/object matching a combination defined above will be enabled for monitoring.zUse % to indicate either any schema or any object. The enabled column indicates whether events for the matching objects are instrumented. The timed column indicates whether information about the events duration is recorded.)&r$rrrrr>r?r@rArirjr TreeFlatListrusersrStringColumnTyperadd_changed_callbackselected_user_changedrrpuser_del_buttonr r" remove_userrrtadd_userrCheckColumnTypeselected_object_changedr object_edited db_del_button remove_object add_objectr) r5r user_panel users_box user_buttonsrruser_add_buttondb_paneldb_box db_buttons db_add_buttons r9rnzSetupFiltering.create_uips{ OF G G F$%%% E4   _V%:;; W%%%M%(( b!!!b!!!'(;FU*UVV   7eLLL  73NNN  73NNN  6 2uMMM  6UKKK   """ ))$*FGGG --d.@AAA 4<t,,,]4(( r"""p k t00gFFtTTT#-// ##H--- //0BCCC &&u---4-ud;;;(** u%%%**4?;;;=%666 :ud+++ V 4&&& r:cp|j|jD]Q}|j}|d|j|d|jR|j|jD]}|j}|d|j |d|j |d|j | d|j | d|jdSNrr=r<r=r)rclearrrrrlrorrrrrrrr)r5r6rs r9rzSetupFiltering.refreshs L * *D:&&((D OOAty ) ) ) OOAty ) ) ) ) M ) )D<((**D OOAty ) ) ) OOAt{ + + + OOAty ) ) ) MM!T\ * * * MM!TZ ( ( ( (  ) )r:ct|j}|du}|j|dSrQ)rget_selected_noderrr5rrs r9rz$SetupFiltering.selected_user_changeds<z++--d" ((11111r:c4|j}|||d}|d}|jt ||||dSdSNrr=)rrrrremover remove_from_parentr)r5rrlros r9rzSetupFiltering.remove_usersz++--|??1%%D??1%%D L  d 3 3 4 4 4  # # % % %  & & ( ( ( ( ( |r:cht|j}|}|r|j}|d|d|d|d|jt|d|ddSdSr) r^ validate_userrrrrrr3r )r5dlgactorrs r9rzSetupFiltering.add_usersd011   =:&&((D OOAuQx ( ( ( OOAuQx ( ( ( L  a%( ; ; < < < < <  = =r:cd}|dkr |dkrd}n.|jt||dkrd}|S)Nrz&Both user and host are required fieldsrzPThe specified user/host is already setup for performance schema data collection.)rrr )r5rlrors r9rzSetupFiltering.validate_usersN 2::$"**.ms'[[[D44U;;[[:cFjSrQ)rr)offsetselectorr5sr9rz/SetupOptions.create_timer_row..us!d.?.?@QRX@Y[c.d.dr:r<)rr$rrr2rmrr SelectorPopupset_namerrrrrr set_selectedrrrn)r5rxr timer_nameps_timerrrs` ` @r9create_timer_rowzSetupOptions.create_timer_rowhs &/+1B61J1U1U1W1W"XZ^__abdegmouxyoy|B|LOUO_|_ ` ` `%f&:;;1222[[[[IZ[[[\\\&v. < +1!'' HdD$(O(OPPe$$$%%&d&d&d&d&d&deee%-z" (Aq&&1*f6FIY6Y\b\n6nooooor:c0tjtj}|dtjd}|dd}|tj|ddtj}| d|d| d| d | d | d tt|jD]}|||||dd||||dddS) Nz Event TimersFreaInstruments measure the duration of events, for which they can use different timers. A timer has characteristics that need to be considered when setting up the timer to be used on the different instruments: - Frequency: Indicates the number of timer units per second. - Resolution: Indicates the size used to increase a timer value at a time. - Overhead: Minimal number of cycles of overhead to obtain one timing. Here you can configure which timer will be used for each instrument type. TzTimer Options Tabler=rpr<rqr;)r$r>r?r@rArjrrrfrrgrhrirjrangelenrr)r5rDrErrxrs r9rnzSetupOptions.create_ui|ss 566 '''}U## f  --ud;;;!! ,--- ! A q!!!   ### a   s4,--.. , ,A  ! !% + + + + t$$$ $ t$$$$$r:c |jD]^}|j|j}|jt |ddd}|j||_dSrQ)rrrrrrr)r5rrrs r9rzSetupOptions.refreshsnN 5 5D|D)/H%++K$d,S,STTE N4 - -e 4 4 4 4 5 5r:N) r^r_r`r&rrrrnrrar:r9rrCsu6))) RRRppp(!%!%!%F55555r:rceZdZdZdS) IntroPagec8tj|d||tjd|_|jd|jdtj d}| tj |j |dd|j tj dddtj }|tjd|j |ddtj d }| tj|j |dd|j tj d ddtj d }| tj|j |dd|j tj d dd| |jdS) NrFrerfzPerformance Schema BasicsTaThe performance schema collects data from various aspects of MySQL performance and gives very detailed information about what exactly is happening inside your MySQL database server. For each statement executed, the PS instruments will gather various statistics and timing information in different levels of granularity and from different subsystems, from network to disk storage, and keep them in the performance_schema.events_* tables.zps_overview.pngzConfiguring Performance SchemaaTo control the trade-off between data collected and overhead, the performance schema gives you a few fine grained configuration options. You can configure what, when and how much will be instrumented by the Performance Schema by tweaking three option categories: * Actors - filters the users, hosts and DB objects to collect data for the performance_schema. This was introduced in MySQL 5.6. * Instruments - allow fine-tuning of what kind of stats are gathered for whatever is being monitored * Consumers - toggle which of the performance_schema.event_* tables should be filled You can also use the simplified configuration interface for one-click setup of the performance schema for some common use cases. z#Performance Schema Instrument TypesaThe Performance Schema will monitor the following types of events that occur internally in the MySQL server, as client requests are executed. * Statement monitoring starts when a new request arrives into a server thread and ends once all processing is complete. These are logged in the event_statement_* tables. * Stage monitors the different stages that occur during the statement execution. Depends on Thread Instrumentation. These are logged in the event_stage_* tables. * Wait monitoring is focused on wait events that occur during the statement execution. These are logged in the event_wait_* tables. For more information, refer to the MySQL manuals section on the Performance Schema. )r$ ScrollPanelr&r'r(rArrirjrr BigBoldStylerrrr.r/r0r)r5rkrrMrs r9r&zIntroPage.__init__s< !!$***  u%%dh h2 h2 /5 6 6akk&%&&& hll1eT""" hll6?$'((*/ 666  ""e oofjnn&&889JKKLLL hll5%&&&o>??e oof&''' hll5%&&& hll6? $   T   oCDDe oof&''' hll5%&&& hll6? $   T    hhtxr:N)r^r_r`r&rar:r9rrs#<<<<<r:rc8eZdZdZdZdZdZdZdZdZ dS) SetupThreadsc tj|d|d|d||||_|dSr) r$rhr&rirjr'r(_threadsrn)r5rs r9r&zSetupThreads.__init__s D%(((    !!!  r:ctjd}|tj||ddtjd}||ddtjtjtjz|_|j tj ddd|j tj ddd|j tj d d d|j tj d dd|j tj d d d|j tj d dd|j tj ddd|j tj dd d|j tj ddd|j tj ddd|j tj ddd|j |j|j||jdd|tjd}|dtj|_|jd|j|j||jddtj|_|jd|j|j||jddtj|_|jd|j|j||jdd||dddS)NzThreads to InstrumentFTzPerformance Schema allows enabling/disabling the monitoring of events that occur on specific threads in the server. Changes on the instrumentation status are only effective if Thread Instrumentation is enabled on the Consumers Tab.IdrName InstrumentedPrz Process IdAccountr>CommandTimeStateInfoDBrezInstrument AllzInstrument NoneRefresh)r$rrrrrrrthreadsrLongIntegerColumnTyperrrr thread_editedrrArirp _enable_allr r" enable_all _disable_all enable_none_refresh_button refresh_datart)r5rrrys r9rnzSetupThreads.create_uis O3 4 4 F$%%% E4   o'BCC  eU+++)&*=f>U*UVV   >> !5$///",.. ""#4555 ..t/?@@@ "E4000%/11 %%i000 11$2CDDD T)5$777 ud#####r:c`|j|dSrQ)r rr]s r9r"zSetupThreads.refresh_data#s)  r:c*|j}t|jD]R}||}d|j|d_|ddSdS)NTrr< rrrrrr get_long instrumentedrr5rootrowrs r9rzSetupThreads.enable_all*s|%%''++--.. # #C>>#&&D;?DM$--** + 8 MM!T " " " " # #r:c*|j}t|jD]R}||}d|j|d_|ddSdS)NFrr<r%r(s r9r zSetupThreads.enable_none1s|%%''++--.. $ $C>>#&&D;@DM$--** + 8 MM!U # # # # $ $r:ch|jt|j}||D]Z}|j}|d|j|j| d|j|j | d|j|j |j|j dkr| ddnS|j|j dkr| ddn&| d|j|j | d |j|j|j|j dkr| d d n;| d |j|jd |j|j| d |j|j| d|j|j| d|j|j| d|j|j| d|j|j\dS)z; Refreshes the UI based on the model class rr=r< BACKGROUNDr=BG FOREGROUNDFGrrpz@r<rqr; N)rrrr rrrset_longidrrrr' thread_typeplist_id plist_user plist_host plist_command plist_time plist_state plist_infoplist_db)r5itemsr6rs r9rzSetupThreads.refresh8sV T]''))**  > >D<((**D MM!T]403 4 4 4 OOAt}T27 8 8 8 MM!T]40= > > >}T".,>>4((((t$0L@@4((((4=#6#BCCC OOAt}T2; < < <}T".,>>:....dmD.A.L.L.Ldm\`NaNlNl#mnnn OOAt}T2@ A A A OOAt}T2= > > > OOAt}T2> ? ? ? OOAt}T2= > > > OOB d 3 < = = = =) > >r:c|dkrG|dkrdnd}||j|d_|d|dSdS)rr<r TFrN)r r&r'r)r5rrrs r9rzSetupThreads.thread_editedVsZ Q;;!SLLDDeE;@DM$--** + 8 MM!U # # # # # ;r:N) r^r_r`r&rnr"rr rrrar:r9r r s~   .$.$.$`###$$$>>><$$$$$r:r ceZdZdZedZedZedZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdS)'WbAdminPerformanceSchemaInstrumentationctj||||tj|d|_d|_t j|_|j|j |j d| | d|j jd|jdS)N)rpr<r< Show Advancedztitle_instrumentation_setup.pngzPerformance Schema - Setup)r r&rmin_server_versioncontentr$rpadvanced_buttonr"switch_advancedr  set_headercreate_standard_header instance_infor)r5ctrl_berKrs r9r&z0WbAdminPerformanceSchemaInstrumentation.__init__bs!$ JJJt$$$") %/11 11$2FGGG %%o666 334UW[WiWnqMOSOcdd e e e e er:c8||dddddS)N PerformancezPerformance Schema SetupF) register_page)cls admin_contexts r9 wba_registerz4WbAdminPerformanceSchemaInstrumentation.wba_registerns'##C8RTnpuvvvvvr:cdS)Nadmin_instrumentation_setupra)rPs r9 identifierz2WbAdminPerformanceSchemaInstrumentation.identifierrs,,r:c|jjSrQ)rLrr]s r9rz6WbAdminPerformanceSchemaInstrumentation.target_versionvs |**r:cztj|||||j|jdkdSr)r count_change apply_buttonr change_count)r5rrrs r9rXz4WbAdminPerformanceSchemaInstrumentation.count_changezs@"4u=== %%d&71&<=====r:c:|jddSNFrGshow)r5failed_validations r9validation_failed_notificationzFWbAdminPerformanceSchemaInstrumentation.validation_failed_notifications !!%(((((r:c:|jddS)NTr]r]s r9"validation_successful_notificationzJWbAdminPerformanceSchemaInstrumentation.validation_successful_notifications !!$'''''r:ctjd|_tjtj|_t ||_|j|jd|j |jdd| dd|_ | |jS)NFz Easy SetupT) r$rArFTabViewTabViewSystemStandard config_tabrc easy_setupadd_pagerr_showing_advancedrHr]s r9rnz1WbAdminPerformanceSchemaInstrumentation.create_uis}U++  .)EFF'--   ,??? $555 !% |r:c:|r|j|jd|j|jd|j|jd|jr |j|jd|jr |j|jd|j|jddS|j|j|j|j|j|j|jr|j|j|jr|j|j|j|jdS)N Introduction Instruments ConsumerszActors & ObjectsThreadsOptions) rfrhintrordata_collection filteringroptions remove_page)r5flags r9switch_config_tabsz:WbAdminPerformanceSchemaInstrumentation.switch_config_tabssq  6 O $ $TZ @ @ @ O $ $T%5} E E E O $ $T%9; G G G~ M((9KLLL| B((yAAA O $ $T\9 = = = = = O ' ' 3 3 3 O ' '(8 9 9 9 O ' '(< = = =~ :o))$.999| 8o))$,777 O ' ' 5 5 5 5 5r:c|j |_|jrJ|d|jd|jdnI|d|jd|jd|j|jrdnddS)NTFz Hide AdvancedrD)rirvrYr^ cancel_buttonrGr r]s r9rHz7WbAdminPerformanceSchemaInstrumentation.switch_advanceds%)%;!;  ! +  # #D ) ) )   " "4 ( ( (   # #D ) ) ) )  # #E * * *   " "5 ) ) )   # #E * * * %%9O&dooUdeeeeer:c |s|d|jt|j|_|j||jt||_ t||jj d|_ t||jj d|jj|_|jjddr7t%||jj d|jj d|_nd|_|jjddrEt)|jj d|_|jd |jnd|_t/||jj d |jj|_|rt5jd |_|jd|jd t5j|_ |j !d |j "d|j #|j$|j%|j dd t5j|_&|j&"d|j&!d|j&#|j'|j&(dt5j|_)|j)"d|j)!d|j)#|j*|j+|j&dd |j+|j)dd |jjddrt5j|_,|j,!d|j,"d|j,#|j-|j+|j,dd |j.%|jdd |s|j/r|d dSdSdS)NFrrrpr<rrrrZrTrezlResets/truncates all performance_schema event tables, deleting all performance schema data collected so far.Clear Event TablesApplyzKApply changes to the performance_schema configurations to the MySQL server.Revertz@Revert to the configuration currently saved in the MySQL server.zfReset all performance_schema settings (instruments, threads, actors, objects etc) to factory defaults.zFull Reset to Factory Defaults)0rvrgrrrL config_dataloadcount_changes_onrrprsectionsrr rrqrrrrrr rr\rrrsr$rAbuttonsrjrirp reset_buttonrr r"on_reset_button_clickedrrYon_apply_button_clickedrrxon_revert_button_clickedrtreset_to_factory_button"on_reset_to_factory_button_clickedrFri)r5 from_scratchs r9rz2WbAdminPerformanceSchemaInstrumentation.rebuild_uisi +  # #E * * *    +4<88  d.///t__ +D$2B2KM2Z[[249I9RS^9_aeaqa{|| < & J J1a P P "+D$2B2KH2UW[WgWpqzW{||DNN!DN < & J J1a P P '(8(A)(LMMDL  2 28T\ J J J JDL#D$*:*CH*MtO_Okll  ! 8!=..DL L $ $Q ' ' ' L $ $R ( ( ( & 0 2 2D    ) )+Y Z Z Z   & &'; < < <   2 243O P P P L  T.t < < < & 0 2 2D    & &w / / /   ) )*w x x x   2 243O P P P   ) )% 0 0 0!'!1!3!3D    ' ' 1 1 1   * *+m n n n   3 3D4Q R R R L !2E4 @ @ @ L !3UD A A A|*NNqRSTT P/5/?/A/A,,88:bccc,556VWWW,AA$Bijjj $$T%A5$OOO L  T\5$ 7 7 7 * 6 *  # #D ) ) ) ) ) * * * *r:c|j}|d|j|dSr\)rfget_active_tabrset_active_tab)r5tabs r9rz@WbAdminPerformanceSchemaInstrumentation.on_revert_button_clickedsCo,,..  &&s+++++r:c||j|j|j|jjdddr|j|j |j dS)Nrpr<r) rrrqr}revert_changesrLrrrrrsrr]s r9on_cancel_button_clickedz@WbAdminPerformanceSchemaInstrumentation.on_cancel_button_clicked s    """ $$&&& ''))) < & J J1aQR S S % N " " $ $ $  r:c8|jdSrQ)r}commit_changesr]s r9rz?WbAdminPerformanceSchemaInstrumentation.on_apply_button_clicked!s '')))))r:cNtjdddddtjkrs |jjdddS#t$rC}td|ztj dd |zd ddYd}~dSd}~wwxYwdS) Nrzz`performance_schema event summary and history tables will be cleared (truncated). Please confirm.z Clear Tablesrarz"call sys.ps_truncate_all_tables(0)r=z0Error calling sys.ps_truncate_all_tables(0): %s z@An error occurred truncating performance_schema event tables. %sr) r$rr~rrrr Exceptionr rr5rs r9rz?WbAdminPerformanceSchemaInstrumentation.on_reset_button_clicked%s   ( ()=*M)72 G GJP/ Z Z W%>>?cefggggg W W WMPQQRRR ++,@CFGHCHJNPRTVWWWWWWWWW W  Z Zs A B"8BB"cxtjdddddtjkr |jjddnP#t$rC}td|ztj dd |zd ddYd}~dSd}~wwxYw| dSdS) Nz!Reset Performance Schema SettingszhAll performance_schema instrumentation settings will be reset to factory configurations. Please confirm.Resetrarz%call sys.ps_setup_reset_to_default(0)r=z-Error calling sys.ps_reset_to_default(0): %s zKAn error occurred resetting performance_schema instrumentation settings. %sr) r$rr~rrrrrr rrrs r9rzJWbAdminPerformanceSchemaInstrumentation.on_reset_to_factory_button_clicked/s   ( ()L*U)0(B @ @CI? S S %>>?fhijjjj   JQNOOO ++,OR`abRbdhjlnpqqq   ) ) + + + + + S Ss A B!8BB!cdSrQrar]s r9rz/WbAdminPerformanceSchemaInstrumentation.refresh;s r:N)r^r_r`r& classmethodrRrUrrrXr`rbrnrvrHrrrrrrrrar:r9rBrBasG e e eww[w--[-++X+>>>)))(((   666* f f fG*G*G*T,,,,***WWW , , ,     r:rB)(rr$workbench.change_trackerrworkbench.graphics.cairo_utilsrworkbench.graphics.canvasr&wb_admin_perfschema_instrumentation_berrrr workbench.logr r workbench.notificationsr wb_admin_perfschemar MYSQL_ERR_TABLE_DOESNT_EXISTrrrrr%rrhrcrr rdr^rrrrrr rBrar:r9rsR, 222222222222111111bbbbbbbbbbbb--------&&&&&&000000# ElElElElEl ElElElPg(g(g(g(g(FJg(g(g(RC+C+C+C+C+vzC+C+C+Lo7o7o7o7o7&*o7o7o7bBBBBBfkBBBJeeeeev{eeeNmmmmmVZmmm``5`5`5`5`56:`5`5`5F====="===@x$x$x$x$x$6:x$x$x$v[ [ [ [ [ .> [ [ [ [ [ r: