日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

mysql 數(shù)據(jù)插入優(yōu)化方法之concurrent_insert

瀏覽:67日期:2023-10-01 12:19:46

當(dāng)一個(gè)線程對(duì)一個(gè)表執(zhí)行一個(gè)DELAYED語句時(shí),如果不存在這樣的處理程序,一個(gè)處理器線程被創(chuàng)建以處理對(duì)于該表的所有DELAYED語句。

通常來說,在MyISAM里讀寫操作是串行的,但當(dāng)對(duì)同一個(gè)表進(jìn)行查詢和插入操作時(shí),為了降低鎖競(jìng)爭(zhēng)的頻率,根據(jù)concurrent_insert的設(shè)置,MyISAM是可以并行處理查詢和插入的:

當(dāng)concurrent_insert=0時(shí),不允許并發(fā)插入功能。當(dāng)concurrent_insert=1時(shí),允許對(duì)沒有洞洞的表使用并發(fā)插入,新數(shù)據(jù)位于數(shù)據(jù)文件結(jié)尾(缺省)。當(dāng)concurrent_insert=2時(shí),不管表有沒有洞洞,都允許在數(shù)據(jù)文件結(jié)尾并發(fā)插入。

這樣看來,把concurrent_insert設(shè)置為2是很劃算的,至于由此產(chǎn)生的文件碎片,可以定期使用OPTIMIZE TABLE語法優(yōu)化。

max_write_lock_count:

缺省情況下,寫操作的優(yōu)先級(jí)要高于讀操作的優(yōu)先級(jí),即便是先發(fā)送的讀請(qǐng)求,后發(fā)送的寫請(qǐng)求,此時(shí)也會(huì)優(yōu)先處理寫請(qǐng)求,然后再處理讀請(qǐng)求。這就造成一 個(gè)問題:一旦我發(fā)出若干個(gè)寫請(qǐng)求,就會(huì)堵塞所有的讀請(qǐng)求,直到寫請(qǐng)求全都處理完,才有機(jī)會(huì)處理讀請(qǐng)求。此時(shí)可以考慮使用 max_write_lock_count:

max_write_lock_count=1

有了這樣的設(shè)置,當(dāng)系統(tǒng)處理一個(gè)寫操作后,就會(huì)暫停寫操作,給讀操作執(zhí)行的機(jī)會(huì)。

low-priority-updates:

我們還可以更干脆點(diǎn),直接降低寫操作的優(yōu)先級(jí),給讀操作更高的優(yōu)先級(jí)。

low-priority-updates=1

綜合來看,concurrent_insert=2是絕對(duì)推薦的,至于max_write_lock_count=1和low-priority- updates=1,則視情況而定,如果可以降低寫操作的優(yōu)先級(jí),則使用low-priority-updates=1,否則使用 max_write_lock_count=1。

set-variable = max_allowed_packet=1Mset-variable = net_buffer_length=2K

在myisam engine下

1. 盡量使用insert into table_name values (…), (…..),(…..)這樣形式插入數(shù)據(jù),避免使用inset into table_name values (); inset into table_name values (); inset into table_name values ();

2 增加bulk_insert_buffer_size(默認(rèn)8M)

3 如果是非空表,使用alter table table_name disable keys,然后load data infile,導(dǎo)入完數(shù)據(jù)在執(zhí)行:

alter table table_name enable keys. 如果是空表,就不需要這個(gè)操作,因?yàn)閙yisam表在空表中導(dǎo)入數(shù)據(jù)時(shí),是先導(dǎo)入數(shù)據(jù)然后建立indexs。

4 在插入數(shù)據(jù)時(shí)考慮使用:insert delayed….這樣操作實(shí)際mysql把insert操作放到隊(duì)列里面,進(jìn)行相對(duì)集中的插入,速度更快。

5. 使用load data infile 比使用insert 操作快近20倍,盡量使用此操作。

在innodb engine下

1.導(dǎo)入數(shù)據(jù)之前執(zhí)行set unique_checks=0來禁止對(duì)唯一索引的檢查,數(shù)據(jù)導(dǎo)入完成之后再運(yùn)行set unique_checks=1.

2. 導(dǎo)入數(shù)據(jù)之前執(zhí)行set foreign_key_checks=0來禁止對(duì)外鍵的檢查,數(shù)據(jù)導(dǎo)入完成之后再執(zhí)行set foreign_key_checks=1.

3.導(dǎo)入數(shù)據(jù)之前執(zhí)行set autocommit=0禁止自動(dòng)事務(wù)的自動(dòng)提交,數(shù)據(jù)導(dǎo)入完成之后,執(zhí)行set autocommit=1 恢復(fù)自動(dòng)提交操作。

使用innodb engine的表,物理存儲(chǔ)都是按PK的順序存的。不能使用類似于myisam一樣disable keys.

硬件上提高磁盤的I/0對(duì)插入速度很有好處(所以如果進(jìn)行大數(shù)據(jù)量的導(dǎo)入導(dǎo)出工作,盡量在比較NB的硬件上進(jìn)行,能縮減完成的時(shí)間,已經(jīng)防止出現(xiàn)問題)。

當(dāng)一個(gè)線程對(duì)一個(gè)表執(zhí)行一個(gè)DELAYED語句時(shí),如果不存在這樣的處理程序,一個(gè)處理器線程被創(chuàng)建以處理對(duì)于該表的所有DELAYED語句。

線程檢查處理程序是否已經(jīng)獲得了一個(gè)DELAYED鎖;如果沒有,它告訴處理程序去獲得。即使其他的線程有在表上的一個(gè)READ或WRITE鎖,也能獲得 DELAYED鎖。然而,處理程序?qū)⒌却蠥LTER TABLE鎖或FLUSH TABLES以保證表結(jié)構(gòu)是最新的。

線程執(zhí)行INSERT語句,但不是將行寫入表,它把最后一行的副本放進(jìn)被處理器線程管理的一個(gè)隊(duì)列。任何語法錯(cuò)誤都能被線程發(fā)覺并報(bào)告給客戶程序。

顧客不能報(bào)告結(jié)果行的重復(fù)次數(shù)或AUTO_INCREMENT值;它不能從服務(wù)器獲得它們,因?yàn)镮NSERT在插入操作完成前返回。如果你使用C API,同樣原因,mysql_info()函數(shù)不返回任何有意義的東西。

當(dāng)行被插入到表中時(shí),更新日志有處理器線程更新。在多行插入的情況下,當(dāng)?shù)谝恍斜徊迦霑r(shí),更新日志被更新。在每寫入delayed_insert_limit行后,處理器檢查是否任何SELECT語句仍然是未完成,如果這樣,在繼續(xù)之前允許執(zhí)行這些語句。

當(dāng)處理器在它的隊(duì)列中沒有更多行時(shí),表被解鎖。如果在delayed_insert_timeout秒內(nèi)沒有收到新的INSERT DELAYED命令,處理器終止。

如果已經(jīng)有多于delayed_queue_size行在一個(gè)特定的處理器隊(duì)列中未解決,線程等待直到隊(duì)列有空間。這有助于保證mysqld服務(wù)器對(duì)延遲的內(nèi)存隊(duì)列不使用所有內(nèi)存。

處理器線程將在Command列的MySQL進(jìn)程表中顯示delayed_insert。如果你執(zhí)行一個(gè)FLUSH TABLES命令或以KILL thread_id殺死它,它將被殺死,然而,它在退出前首先將所有排隊(duì)的行存進(jìn)表中。在這期間,這次它將不從其他線程接受任何新的INSERT命令。如 果你在它之后執(zhí)行一個(gè)INSERT DELAYED,將創(chuàng)建一個(gè)新的處理器線程。

注意,上述意味著,如果有一個(gè)INSERT DELAYED處理器已經(jīng)運(yùn)行,INSERT DELAYED命令有比正常INSERT更高的優(yōu)先級(jí)!其他更新命令將必須等到INSERT DELAY排隊(duì)變空、殺死處理器線程(用KILL thread_id)或執(zhí)行FLUSH TABLES。

下列狀態(tài)變量提供了關(guān)于INSERT DELAYED命令的信息: Delayed_insert_threads 處理器線程數(shù)量

Delayed_writes 用INSERT DELAYED被寫入的行的數(shù)量Not_flushed_delayed_rows 等待被寫入的行數(shù)字

高并發(fā)insert語句的解決方法

前言

1、防止數(shù)據(jù)多次修改

1.1 、insert方案

1、添加uniqpue進(jìn)行解決(重復(fù)則是更新)

insert一般沒什么問題,直接控制好unique就可以,這樣的話,就不會(huì)插入兩條(如果重復(fù)了則,進(jìn)行更新操作)

2、update方案

1、redis分布式鎖、消息隊(duì)列(每次只插入一個(gè))

2、mysql鎖(更新可以使用樂觀鎖)

2、高并發(fā)下的安全性

1、在線的網(wǎng)站上去執(zhí)行一個(gè)大的DELETE或INSERT查詢,要避免你的操作讓你的整個(gè)網(wǎng)站停止相應(yīng)。因?yàn)檫@兩個(gè)操作是會(huì)鎖表的(update也是,如果沒有指定唯一主鍵或者索引的話,會(huì)鎖表),表一鎖住了,別的操作都進(jìn)不來了。所以一定要非常小心

2、如果你把你的表鎖上一段時(shí)間,比如30秒鐘,那么對(duì)于一個(gè)有很高訪問量的站點(diǎn)來說,這30秒所積累的訪問進(jìn)程/線程,數(shù)據(jù)庫(kù)鏈接,打開的文件數(shù),可能不僅僅會(huì)讓你泊WEB服務(wù)Crash,還可能會(huì)讓你的整臺(tái)服務(wù)器馬上?熗恕 >

2.1、解決方案

2.1.1、表的調(diào)整

把表按列變成幾張表的方法,這樣可以降低表的復(fù)雜度和字段的數(shù)目,從而達(dá)到優(yōu)化的目的。(如果有一百多個(gè)字段是很恐怖的)

示例一:

在Users表中有一個(gè)字段是家庭地址,這個(gè)字段是可選字段,相比起,而且你在數(shù)據(jù)庫(kù)操作的時(shí)候除了個(gè)人信息外,你并不需要經(jīng)常讀取或是改寫這個(gè)字段。那么,為什么不把他放到另外一張表中呢?這樣會(huì)讓你的表有更好的性能,大家想想是不是,大量的時(shí)候,我對(duì)于用戶表來說,只有用戶ID,用戶名,口令,用戶角色等會(huì)被經(jīng)常使用。小一點(diǎn)的表總是會(huì)有好的性能。

示例二:

你有一個(gè)叫“l(fā)ast_login”的字段,它會(huì)在每次用戶登錄時(shí)被更新。但是,每次更新時(shí)會(huì)導(dǎo)致該表的查詢緩存被清空。所以,你可以把這個(gè)字段放到另一個(gè)表中,這樣就不會(huì)影響你對(duì)用戶ID,用戶名,用戶角色的不停地讀取了,因?yàn)椴樵兙彺鏁?huì)幫你增加很多性能。hp程序員之家

另外,需要注意的是,這些被分出去的字段所形成的表,我們是認(rèn)為不會(huì)經(jīng)常是join的,否則,這樣的性能會(huì)比不分割表的時(shí)候時(shí)還要差,而且,會(huì)是極數(shù)級(jí)的下降

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
视频在线观看一区二区三区| 日本a级不卡| 精品一区在线| 国产精品久久久免费| 亚洲免费一区二区| 欧洲毛片在线视频免费观看| 日韩1区2区| 精品日韩一区| 国产一卡不卡| 日本va欧美va精品发布| 免费日韩av片| 羞羞答答国产精品www一本| 欧美一区二区三区高清视频| 午夜av不卡| 色婷婷亚洲mv天堂mv在影片| 在线免费观看亚洲| 久久五月天小说| 日本美女一区| 六月婷婷综合| 日韩免费高清| 久久久夜精品| 99久久亚洲精品| 久久婷婷丁香| 激情婷婷亚洲| 国产综合婷婷| 欧美成人a交片免费看| 久久精品欧洲| 国产aa精品| 日韩欧美一区免费| 久久精品青草| 日韩专区一卡二卡| 亚洲一区国产| 欧美精品一区二区三区精品| 激情欧美一区二区三区| 亚洲国产成人精品女人| 亚洲不卡av不卡一区二区| 久久精品观看| 久久先锋影音| 国产精品亚洲产品| 久久中文字幕二区| 欧美日韩精品一区二区三区视频| www.51av欧美视频| 亚洲综合专区| 中文字幕高清在线播放| 免播放器亚洲一区| 欧美激情另类| 美女久久网站| 国产成人1区| 亚洲精品免费观看| 精品免费av在线| 欧美精品中文字幕亚洲专区| 97精品国产福利一区二区三区| 亚洲免费影视| 久久午夜影院| 视频一区在线视频| 精品久久电影| 亚洲我射av| 热三久草你在线| 日韩国产在线观看| 色88888久久久久久影院| 老司机精品久久| 欧美91在线|欧美| 麻豆亚洲精品| 日韩欧美少妇| 国产精久久久| 蜜桃一区二区三区在线观看| 国产精品精品| 日本午夜精品视频在线观看| 99久久夜色精品国产亚洲1000部| 国产日韩欧美一区在线| 亚洲欧洲一区二区天堂久久| 久久中文字幕一区二区| 亚洲午夜久久| 日韩欧美四区| 狠狠色狠狠色综合日日tαg| 精品网站aaa| 在线精品观看| 久久久精品日韩| 欧美激情福利| 国产精品天天看天天狠| 国产模特精品视频久久久久| 亚洲欧洲美洲av| 国产精品magnet| 亚洲精品动态| 黄色成人91| 欧美精品资源| 精品视频久久| 国产精品永久| 日本aⅴ亚洲精品中文乱码| 中文精品视频| 五月天激情综合网| 伊伊综合在线| 精品网站999| 国产精品白浆| 久久激情五月激情| 亚洲精品极品| 手机精品视频在线观看| 亚洲国产专区校园欧美| 国产激情在线播放| 久久精品国产99国产| 日韩高清不卡一区| 一级成人国产| 午夜宅男久久久| 欧美日韩激情| 亚洲天堂成人| 在线一区视频观看| 国产精品99在线观看| 国产欧美日韩免费观看| 蜜臀国产一区二区三区在线播放| 伊人精品视频| 亚洲特色特黄| 亚洲香蕉网站| 91精品久久久久久久久久不卡| 午夜久久中文| 人在线成免费视频| 日韩欧美字幕| 久久久久网站| 不卡中文字幕| 性欧美长视频| 亚洲视频电影在线| 日韩国产欧美一区二区三区| 免费日本视频一区| 亚洲精品麻豆| 青青青国产精品| 国产调教精品| 国内自拍视频一区二区三区| 97国产成人高清在线观看| 9999国产精品| 久久久久.com| 国产亚洲高清视频| 亚洲精品中文字幕99999| 欧美日韩午夜| 成人精品久久| re久久精品视频| 在线一区二区三区视频| 69堂精品视频在线播放| 国产精品nxnn| 欧美日韩国产观看视频| 精品在线99| 一区二区电影| 国产精品a久久久久| 成人午夜网址| 国产99久久| 亚洲我射av| 久久a爱视频| 99精品视频在线| 日韩在线观看一区二区| 欧美日韩精品一区二区三区在线观看| 美女视频黄久久| 亚洲福利一区| 亚洲精品成a人ⅴ香蕉片| 国产精品久久久久久模特 | 亚洲丝袜啪啪| 国产日韩高清一区二区三区在线| 欧美国产极品| 久久精品青草| 日日夜夜免费精品| 成人午夜毛片| 伊人久久亚洲影院| 欧美日韩亚洲一区二区三区在线| 国产一区二区三区四区五区| 91超碰国产精品| 青青草91视频| 日韩精品91| 玖玖精品视频| 麻豆久久久久久| 亚洲一级二级| 国产乱码精品| 激情婷婷亚洲| 欧美午夜三级| 久久久777| 日韩动漫一区| 久久裸体视频| 国产麻豆一区| 亚洲高清不卡| 国产精品一区二区中文字幕| 免费高潮视频95在线观看网站| 蜜臀av在线播放一区二区三区| 国产精品日本一区二区三区在线| 日韩电影免费网址| 亚洲开心激情| 日韩三区免费| 清纯唯美亚洲综合一区| 蜜桃精品在线| 国产日韩中文在线中文字幕| 99视频精品视频高清免费| 日韩av在线免费观看不卡| 久久视频一区| 国产精品视频一区二区三区四蜜臂| 欧美91精品| 国产精品99久久免费| 午夜精品影院| 日本一区二区免费高清| 亚洲aa在线| 成人日韩在线| 国产激情久久| 综合激情五月婷婷| 免费污视频在线一区| 国产精品nxnn| 亚洲精品护士|