欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么調(diào)試mysql過(guò)程 mysql如何操作

如何安裝并測(cè)試MySQL

PHP MySQL Linux現(xiàn)在已逐漸成為小型web服務(wù)器的一種經(jīng)典組合。在Windows環(huán)境下構(gòu)筑和調(diào)試MySQL數(shù)據(jù)庫(kù)是許多網(wǎng)站研發(fā)者的一種最好選擇。本人在Windows98環(huán)境下初學(xué)MySQL,現(xiàn)將學(xué)習(xí)過(guò)程和經(jīng)驗(yàn)總結(jié)出來(lái)供大家參考。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),陽(yáng)泉企業(yè)網(wǎng)站建設(shè),陽(yáng)泉品牌網(wǎng)站建設(shè),網(wǎng)站定制,陽(yáng)泉網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,陽(yáng)泉網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1、下載mysql-3.23.35-win.zip并解壓;

2、運(yùn)行setup.exe;選擇d:mysql,"tyical install"

3、啟動(dòng)mysql,有如下方法:方法一:使用winmysqladmin

1)、進(jìn)入d::mysqlbin目錄,運(yùn)行winmysqladmin.exe,在屏幕右下角的任務(wù)欄內(nèi)會(huì)有一個(gè)帶紅色的圖符

2)、鼠標(biāo)左鍵點(diǎn)擊該圖符,選擇“show me”,出現(xiàn)“WinMySQLAdmin”操作界面;首次運(yùn)行時(shí)會(huì)中間會(huì)出現(xiàn)一個(gè)對(duì)話框需要輸入并配置您的用戶名和口令

3)、選擇“My.INI setup”

4)、在“mysqld file”中選擇“mysqld-opt”(win9x)或“mysqld-nt”(winNT)

5)、選擇“Pick-up or Edit my.ini values”能夠在右邊窗口內(nèi)對(duì)您的my.ini文檔進(jìn)行編輯

6)、選擇“Save Modification”保存您的my.ini文檔

7)、假如您想快速使用winmysqladmin(開(kāi)機(jī)時(shí)自動(dòng)運(yùn)行),選擇“Create ShortCut on Start Menu”

8)、測(cè)試:

進(jìn)入DOS界面;

在d:mysqlbin目錄下運(yùn)行mysql,進(jìn)入mysql交互操作界面

輸入show databases并回車,屏幕顯示出當(dāng)前已有的兩個(gè)數(shù)據(jù)庫(kù)mysql和test方法二:不使用winmysqladmin

1)、在DOS窗口下,進(jìn)入d:/mysql/bin目錄

2)、win9X下)運(yùn)行:mysqld在NT下運(yùn)行:

mysqld-nt --standalone

3)、此后,mysql在后臺(tái)運(yùn)行

4)、測(cè)試mysql:(在d:/mysql/bin目錄下)

a)、mysqlshow 正常時(shí)顯示已有的兩個(gè)數(shù)據(jù)庫(kù)mysql和test

b)、mysqlshow -u root mysql 正常時(shí)顯示數(shù)據(jù)庫(kù)mysql里的五個(gè)表:columns_priv,db,host,tables_priv,user

c)、mysqladmin version status proc 顯示版本號(hào)、狀態(tài)、進(jìn)程信息等

d)、mysql test 進(jìn)入mysql操作界面,當(dāng)前數(shù)據(jù)庫(kù)為test

4、至此,MySQL已成功安裝,接著能夠熟悉MySQL的常用命令并創(chuàng)建自己的數(shù)據(jù)庫(kù)了。

MySQL5.7 MVCC原理分析與調(diào)試

簡(jiǎn)介:

大家好,我是xp,我又詐尸了

mvcc ,想必大家都不陌生,每個(gè)Java程序員都或多或少的了解過(guò),不過(guò)不知道大家都是怎么學(xué)習(xí)的,是不是簡(jiǎn)單的百度一下呢?下面,我來(lái)帶大家裝個(gè)13,調(diào)試 mvcc 。咳,不是源碼哈,但有那味了。

開(kāi)卷開(kāi)卷。

首先介紹一下 mvcc 的字面意思,全稱: Multiversion Concurrency Control,翻譯下來(lái)就是多版本并發(fā)控制技術(shù)。

臟讀、 不可重復(fù)讀 、幻讀的概念就不多啰嗦了,mvcc具體的含義也不多啰嗦了,可以自行百度。 mvcc 解決了臟讀、 不可重復(fù)讀、部分幻讀 ,包含了3個(gè)重要成分:

undo log作用:

在數(shù)據(jù)修改的時(shí)候,不僅記錄了 redo log ,還記錄了 undo log 。但是 不同于 redo log , undo log 是邏輯日志。簡(jiǎn)單理解成, delete的時(shí)候,undo log會(huì)出現(xiàn)一條insert,update的時(shí)候,undo log會(huì)出現(xiàn)一條舊數(shù)據(jù), 用來(lái)事務(wù)失敗之后的回滾。

3個(gè)隱式字段:

Read View:

好了,理論講完了,讓我們嗨起來(lái)。

嗨之前,有一個(gè)情況單獨(dú)說(shuō)一下:

可以看到,此時(shí)的trx_id非常大,這是因?yàn)榇藭r(shí)是只讀事務(wù)。對(duì)于只讀事務(wù), InnoDB 并不會(huì)分配 trx_id,只有發(fā)生dml才會(huì)分配。這樣有2個(gè)好處:

當(dāng)commit了之后,我們使用SHOW ENGINE INNODB STATUS查看:

可以看到,顯示該事務(wù)并沒(méi)有開(kāi)始。

好,回到正軌,相信大家都知道, 視圖可見(jiàn)性判斷(不知道的先百度 mvcc ):

整體是這樣的:

第一步我們以 38488 為開(kāi)始值,把 name 更新成 111 ,并且 commit

第二步以 38490 把 name 更新成 222,333 ,但是不 commit

當(dāng) 38490 第一次修改為 222 的時(shí)候,數(shù)據(jù)結(jié)構(gòu)大致是這樣的:

使用 SHOW ENGINE INNODB STATUS 側(cè)面驗(yàn)證:

當(dāng) 38490 第二次修改為 333 的時(shí)候,數(shù)據(jù)結(jié)構(gòu)大致是這樣的:

使用 SHOW ENGINE INNODB STATUS 側(cè)面驗(yàn)證:

第三步以 38491 去查詢,此時(shí)生成的 m_ids 應(yīng)該是 [348490,38491]

使用 SHOW ENGINE INNODB STATUS 側(cè)面驗(yàn)證:

此時(shí) ReadView 的幾個(gè)屬性值為:

接下來(lái)我們來(lái)驗(yàn)證結(jié)論:

1:不用驗(yàn)證,當(dāng)前事務(wù)修改的肯定自己可見(jiàn)

2: 38491查詢id=1的記錄,name為111

38488 348490,所以111可見(jiàn)

3:不用驗(yàn)證,38492是下個(gè)事務(wù)的id,還沒(méi)生成呢,當(dāng)前事務(wù),肯定看不見(jiàn)下個(gè)事務(wù)修改的值

4:我們先把38491commit,把id為20的name更新成111

然后再開(kāi)一個(gè)事務(wù)38496:

此時(shí)查id為20,是可見(jiàn)的

m_ids:[348490,38496],因?yàn)?8491已經(jīng)commit了,所以m_ids沒(méi)有。此時(shí)的38491在m_ids之間,但是在m_ids里面找不到,所以可見(jiàn)。

好了,愉快的裝13結(jié)束了,兄弟們,下次見(jiàn)。

navicat 怎樣調(diào)試mysql存儲(chǔ)過(guò)程

navicat 怎樣調(diào)試mysql存儲(chǔ)過(guò)程

使用Navicat for MySQL工具創(chuàng)建存儲(chǔ)過(guò)程步驟:

1. 新建函數(shù)(選擇函數(shù)標(biāo)簽 - 點(diǎn)擊新建函數(shù)):

2、輸入函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)名、參數(shù)類型等:

3、編寫(xiě)存儲(chǔ)過(guò)程:

4、保存(請(qǐng)輸入合法名稱):

5、運(yùn)行存儲(chǔ)過(guò)程(在結(jié)果1,2,3...中可以查詢輸出信息):

幫忙調(diào)試一段MYSQL的存儲(chǔ)過(guò)程!

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

/*腳本2開(kāi)始*/

DECLARE RANDSTR varchar(2) DEFAULT CAST(round(rand()*53) AS char(2));

DECLARE LocationId INT DEFAULT (SELECT `ID` FROM `shuo_Citys` WHERE `PID`0 ORDER BY rand() Limit 1);

DECLARE Location VARCHAR(50) DEFAULT (SELECT `Name` FROM `shuo_Citys` WHERE `ID`=LocationId);

/*腳本2結(jié)束*/

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

這段移到

declare Uid int;

的下一行

原因:declare 必須都在最前面

新手如何調(diào)試 MySQL?看這一篇就夠了

前幾天看到姜老師的舊文 用 VSCode 編譯和調(diào)試 MySQL,每個(gè) DBA 都應(yīng) get 的小技能[1] , 文末留了一個(gè)思考題,如何修改源碼,自定義版本,使得 select version() 輸出自定義內(nèi)容

調(diào)試過(guò)程參考 macOS VSCode 編譯調(diào)試 MySQL 5.7[2]

內(nèi)部 Item 對(duì)象參考 從SQL語(yǔ)句到MySQL內(nèi)部對(duì)象[3]

源碼面前沒(méi)有秘密,建義對(duì) DB 感興趣的嘗試 debug 調(diào)試。本文環(huán)境為 mac + vscode + lldb

vscode 插件:

mysql 源碼:

補(bǔ)丁: MySQL = 8.0.21 需要對(duì) cmake/mysql_version.cmake 文件打補(bǔ)丁 (沒(méi)有嚴(yán)格測(cè)試所有版本)

創(chuàng)建 cmake-build-debug 目錄,后續(xù) mysql 編譯結(jié)果,以及啟動(dòng)后生成的文件都在這里

在 mysql 工程目錄下面創(chuàng)建 .vscode/settings.json 文件

內(nèi)容沒(méi)啥好說(shuō)的,都是指定目錄及 boost 配置,其中 WITH_DEBUG 打開(kāi) debug 模式,會(huì)在 /tmp/debug.trace 生成 debug 信息

View - Command Palette - CMake: Configure 執(zhí)行后生成 cmake 配置

View - Command Palette - CMake: Build 編譯生成最終 mysql 相關(guān)命令

發(fā)現(xiàn)老版本編譯很麻煩,各種報(bào)錯(cuò),mysql 5.7 代碼量遠(yuǎn)超過(guò) 5.5, 只能硬著頭皮看 5.7

首先初始化 my.cnf 配置,簡(jiǎn)單的就可以,共它均默認(rèn)

初始化數(shù)據(jù)文件,非安全模式,調(diào)試用

由于用 vscode 接管 mysql, 所以需要配置 .vscode/launch.json

然后點(diǎn)擊 run and debug mysqld

mysql 啟動(dòng),看到輸出日志無(wú)異常,此時(shí)可以用 mysql-client 連接

首先在 sql_parser.cc:5435 處打斷點(diǎn)

mysql_parse 是 sql 處理的入口,至于 tcp connection 連接先可以忽略

執(zhí)行上述 sql 自動(dòng)跳轉(zhuǎn)到斷點(diǎn)處, Step Into , Step Over , Step Out 這些調(diào)試熟悉下即可

接下來(lái)分別調(diào)用主要函數(shù): mysql_execute_command , execute_sqlcom_select , handle_query , select-join-exec() , Query_result_send::send_data , Item::send , Item_string:val_str , Protocol_text::store , net_send_ok

啟動(dòng) mysql 時(shí) init_common_variables 會(huì)初始化一堆變量,其中會(huì)調(diào)用 set_server_version 生成版本信息,修改這個(gè)就可以

看好條件編譯的是哪塊,修改即可, 重新 CMake: Build 編譯再運(yùn)行

這里不做過(guò)深分析,簡(jiǎn)單講

sql_yacc.cc 函數(shù) PTI_function_call_generic_ident_sys 解析 sql, 識(shí)別出 version() 是一個(gè)函數(shù)調(diào)用

find_native_function_builder 查找 hash 表,找到對(duì)應(yīng) version 函數(shù)注冊(cè)的單例工廠函數(shù)

mysql 啟動(dòng)時(shí)調(diào)用 item_create_init 將這些函數(shù) builder 注冊(cè)到 hash 表 native_functions_hash

MySQL 代碼太龐大,5.1 大約 100w 行,5.5 130w 行,5.7 以后 330w 行,只能挑重點(diǎn)讀源碼。最近很多群里的人在背八股,沒(méi)必要,有那時(shí)間學(xué)著調(diào)試下源碼,讀讀多好

原文出處:

本文名稱:怎么調(diào)試mysql過(guò)程 mysql如何操作
當(dāng)前路徑:http://chinadenli.net/article30/dodpeso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站改版微信公眾號(hào)營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司