1、打開mysql的客戶端 這里使用navicat,連接數(shù)據(jù)庫(kù),等到navicat主頁(yè)面,雙擊需要操作的數(shù)據(jù)庫(kù)連接。
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)新邵,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
2、登錄到數(shù)據(jù)庫(kù)主頁(yè)面后,點(diǎn)擊左側(cè)的數(shù)據(jù)庫(kù)連接,打開數(shù)據(jù)庫(kù),可以看到可以操作的所有數(shù)據(jù)庫(kù)。
3、這時(shí)有有兩個(gè)數(shù)據(jù)庫(kù),目標(biāo)是將數(shù)據(jù)1的所有數(shù)據(jù)同步到數(shù)據(jù)庫(kù)2上,需要點(diǎn)擊主頁(yè)面上的。
4、打開工具菜單,選擇數(shù)據(jù)庫(kù)同步菜單,彈出數(shù)據(jù)同步的對(duì)話框,可以選擇數(shù)據(jù)源,目標(biāo)數(shù)據(jù)庫(kù)。
5、選擇數(shù)據(jù)庫(kù)源和需要操作的數(shù)據(jù)庫(kù)后,然后在選擇目標(biāo)數(shù)據(jù)庫(kù)連接,目標(biāo)數(shù)據(jù)庫(kù),然后在選擇需要操作的表,點(diǎn)擊開始即可。
表對(duì)象緩存: 是將某個(gè)表對(duì)象的字典信息(定義內(nèi)容)緩存到內(nèi)存中,用來提高對(duì)表的訪問效率。某個(gè)表被訪問過一次后,只要服務(wù)器沒有關(guān)閉且表定義沒有被修改的條件下,訪問該表,只需要從內(nèi)存中找到這個(gè)已經(jīng)緩存起來的對(duì)象做相應(yīng)操作即可。
用戶訪問表時(shí),表對(duì)象在緩存時(shí): 通過HASH算法找到TABLE_SHARE,然后每個(gè)線程構(gòu)造各自的實(shí)例化TABLE即可。
用戶訪問表時(shí),當(dāng)表沒有被緩存的情況下: 第一需要打開表,首先需要從系統(tǒng)表中將這個(gè)表的所有信息都讀入內(nèi)存中,這些信息包括表名、庫(kù)名、所有列信息、列的默認(rèn)值、表的字符集、對(duì)應(yīng)的frm文件路徑、所屬存儲(chǔ)引擎、主鍵等,將這些信息構(gòu)造一個(gè)TABLE_SHARE結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體是表對(duì)象緩存的第一層,所有用戶共享訪問且為靜態(tài)不允許修改,它是緩存在table_def_cache(由參數(shù)table_definition_cache控制)中的。
而真正與用戶打交道的是TABLE_SHARE的衍生品,它對(duì)應(yīng)結(jié)構(gòu)體為TABLE,在被使用前需要將TABLE_SHARE結(jié)構(gòu)體實(shí)例化TABLE才能被使用,由每個(gè)線程構(gòu)造各自的實(shí)例化TABLE即可。(實(shí)例化的TABLE由table_open_cache及table_open_cache_instance控制)
注意1: DDL操作時(shí)會(huì)將所有instance鎖住,而DML操作時(shí)instance之間互不干擾。
(DDL statements still require a lock on the entire cache, but such statements are much less frequent than DML statements.)
注意2: 一個(gè)線程中如果打開表過多,超過一個(gè)instance限制的大小時(shí),是不能跨instance緩存的
(instance大?。簍able_open_cache / table_open_cache_instances)
表緩存涉及其他參數(shù): 通過下面參數(shù)判斷table_open_cache參數(shù)設(shè)置是否合理
table_open_cache_hit:能夠從table open cache的free list中找到table則為命中,+1
table_open_cache_misses:與table_open_cache_hit相反,如果找不到則需要重新實(shí)例化則+1,通常發(fā)生在初始化第一次加載表或超過table_open_cache的設(shè)置被淘汰后需要重新實(shí)例化。
table_open_cache_overflow:table cache淘汰的數(shù)量,每次淘汰+1
opened_tables:已經(jīng)打開的表數(shù)。如果Opened_tables很大,那么table_open_cache的值可能太小了。
open_tables:總的instance (table cache)的總數(shù)
之前寫過了Go語言gorm框架MySQL實(shí)踐,其中對(duì)gorm框架在操作MySQL的各種基礎(chǔ)實(shí)踐,下面分享一下如何使用gorm框架對(duì)MySQL直接進(jìn)行性能測(cè)試的簡(jiǎn)單實(shí)踐。
這里我使用了一個(gè)原始的Go語言版本的 FunTester 測(cè)試框架,現(xiàn)在只有一個(gè)基本的方法,實(shí)在是因?yàn)镚o語言特性太強(qiáng)了??蚣茉O(shè)計(jì)的主要思路之一就是利用Go語言的閉包和方法參數(shù)特性,將一個(gè) func() 當(dāng)做性能測(cè)試的主題,通過不斷運(yùn)行這個(gè) func() 來實(shí)現(xiàn)性能測(cè)試。當(dāng)然還有另外一個(gè)思路就是運(yùn)行一個(gè)多線程任務(wù)類,類似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象類,這樣可以設(shè)置一些類的屬性,綁定一些測(cè)試資源,適配更多的測(cè)試場(chǎng)景。
下面演示select的性能測(cè)試,這里我用了隨機(jī)ID查詢的場(chǎng)景。
這里我使用從35開始遞增的ID進(jìn)行刪除。
這里使用了select的用例部分,隨機(jī)ID,然后更新name字段,隨機(jī)10個(gè)長(zhǎng)度的字符串。
這里用到了 FunTester 字段都是隨機(jī)生成。
到這里可以看出,性能測(cè)試框架用到的都是gorm框架的基礎(chǔ)API使用,這里MySQL連接池的管理工作完全交給了gorm框架完成,看資料說非常牛逼,我們只需要設(shè)置幾個(gè)參數(shù)。這個(gè)使用體現(xiàn)很像 HttpClient 設(shè)置 HTTP 連接池類似,這里我們也可以看出這些優(yōu)秀的框架使用起來都是非常簡(jiǎn)單的。
PS:關(guān)于gorm的基礎(chǔ)使用的請(qǐng)參考上一期的文章Go語言gorm框架MySQL實(shí)踐。
我們都知道 MySQL 的 Table Cache 是表定義的緩存,江湖上流傳著各種對(duì)這個(gè)參數(shù)的調(diào)優(yōu)方法。
table cache 的作用,就是節(jié)約讀取表結(jié)構(gòu)文件的開銷。對(duì)于table cache 是否命中,其實(shí)table cache 是針對(duì)于線程的,每個(gè)線程有自己的緩存,只緩存本線程的表結(jié)構(gòu)定義。不過我們發(fā)現(xiàn),strace 中沒有關(guān)于表結(jié)構(gòu)文件的 open 操作(只有 stat 操作,定位表結(jié)構(gòu)文件是否存在),也就是說 table cache 不命中,不一定需要讀取表結(jié)構(gòu)文件。這種感覺好像是:在不命中 table cache 時(shí),命中了另外一個(gè)表結(jié)構(gòu)緩存。
運(yùn)維建議:
我們讀一下 MySQL 的文檔,關(guān)于 table_open_cache 的建議值公式:建議值 = 最大并發(fā)數(shù) * join 語句涉及的表的最大個(gè)數(shù)。
通過實(shí)驗(yàn)我們?nèi)菀桌斫猓簍able_cache 是針對(duì)于線程的,所以需要最大并發(fā)數(shù)個(gè)緩存。另外,一個(gè)語句 join 涉及的表,需要同時(shí)在緩存中存在。所以最小的緩存大小,等于語句 join 涉及的表的最大個(gè)數(shù)。將這兩個(gè)數(shù)相乘,就得到了 MySQL 的建議值公式。
網(wǎng)頁(yè)標(biāo)題:go語言mysql緩存 go 操作mysql
網(wǎng)站地址:http://vcdvsql.cn/article32/hpgppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、外貿(mào)網(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í)需注明來源: 創(chuàng)新互聯(lián)