欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于數(shù)據(jù)庫遍歷的方法與設(shè)備與流程

文檔序號:11286382閱讀:221來源:國知局
本申請涉及計算機領(lǐng)域,尤其涉及一種用于數(shù)據(jù)庫遍歷的技術(shù)。
背景技術(shù)
::在云數(shù)據(jù)庫場景下,多個用戶的數(shù)據(jù)庫實例會占用不同的內(nèi)存、cpu和iops(input/outputoperationspersecond,每秒進行讀寫操作的次數(shù),表示訪問磁盤的頻率)等資源,有時需要遍歷用戶的數(shù)據(jù),一個典型的例子是在mysql數(shù)據(jù)庫場景下去遍歷用戶數(shù)據(jù)檢查用戶實例的主庫和其各個備庫是否存在數(shù)據(jù)不一致。如果是用戶去遍歷自己的數(shù)據(jù),當然在其所購買的資源限制范圍內(nèi),不會再另行限制,保證用戶用夠自己的資源;但是如果云計算的提供商想要遍歷用戶的數(shù)據(jù),就必須加以限制,例如,使其訪問不超過用戶購買資源的指定百分比,而這樣的限制是已有的如cgroups等進程級資源限制工具所無法滿足的,因為對數(shù)據(jù)庫進行遍歷往往是線程級或會話級,且與用戶訪問是并行的,無法用進程級訪問來進行限制。而在數(shù)據(jù)庫遍歷的場景下,每次訪問的數(shù)據(jù)量是有限的,且不會有大量的計算,所以占用用戶的內(nèi)存和cpu是極少的,而占用的iops資源卻是十分明顯的。對于云計算的提供商而言,在與用戶并行訪問數(shù)據(jù)庫時,如何在面對各種規(guī)格的云數(shù)據(jù)庫用戶以及各種類型的數(shù)據(jù)庫和表時,控制遍歷時所用的iops,使其被限制在用戶所擁有資源的指定百分比內(nèi),不影響其他業(yè)務,已成為關(guān)乎用戶體驗的重要問題。為應對該技術(shù)問題,現(xiàn)有的工具通常采用如下方法:(1)設(shè)置一個最大線程數(shù)max-load,當連接到主庫并執(zhí)行sql的線程數(shù)超過該值時,停止檢查數(shù)據(jù);(2)當檢查的表為innodb時,設(shè)置其鎖等待時間為1s,即當用戶有引起鎖表的sql時,若鎖表超過1s,會產(chǎn)生報警,從而中斷檢查;(3)設(shè)置一個最大塊行數(shù),當要檢查的塊行數(shù)超過該值時,跳過檢查當前塊;(4)通過統(tǒng)計歷史平均行數(shù)來推測下一塊應該的檢查行數(shù),這種推測不是表級別的,而是所有表所有分塊的平均行數(shù),即通過歷史平均行數(shù)和上一塊的行數(shù)加權(quán)來判斷當前系統(tǒng)性能表現(xiàn),來決定下一塊行數(shù)。然而,現(xiàn)有的工具存在如下的缺點:(1)屬于進程級別的限制,而沒有對具體的用戶數(shù)據(jù)庫和表進行具體的分析,只是通過評估數(shù)據(jù)庫實例進程所能達到的速度,來推斷可以遍歷的數(shù)據(jù)塊行數(shù),存在不精確的問題,會打滿用戶的iops,這在云計算場景下會釀成大禍,且用戶的訪問與遍歷過程是并行的,單純評估實例整體的平均行數(shù),是不可靠的,無法準確控制遍歷的速度。(2)限制最大可執(zhí)行sql的線程數(shù)max-load缺乏根據(jù),是一種猜測性比較重的自我保護措施,因為并非執(zhí)行sql的線程數(shù)越多,進程的負載就越大,而應該結(jié)合具體數(shù)據(jù)進行分析,做到既不影響用戶,又能達到最佳的遍歷性能,不因線程數(shù)少而開啟遍歷,也不因線程數(shù)多而停止遍歷。(3)設(shè)置鎖等待超時時間的作用并不明朗,實際上,鎖等待超時時間能起到的作用是當遍歷的sql與用戶的寫鎖沖突時,放棄遍歷當前塊,這是不合理的,也是無用的;因為對innodb引擎而言,遍歷并不會與用戶的寫操作產(chǎn)生沖突的;對myisam引擎而言,該參數(shù)是無用的,而在myisam引擎下,遍歷會阻塞住用戶的寫操作;鎖等待超時并不能防止一個慢sql的發(fā)生,如果在遍歷中不慎發(fā)生了慢sql,這才是對用戶iops致命的,會打滿用戶的iops;無法在面對各種引擎、各種數(shù)據(jù)時,在sql發(fā)出去之前就精確預估其執(zhí)行時間,在產(chǎn)生慢sql時僅僅是鎖超時時中斷其自己的sql。(4)設(shè)置最大塊行數(shù)的作用并不明顯,不同的數(shù)據(jù)庫表其每一行大小都不一樣,保存幾個整型的表每一行可能非常小,保存字符串的表每一行可能非常長,全局而論行數(shù)是不合理的,因為塊行數(shù)過大而跳過檢查,無法自適應調(diào)節(jié)的塊行數(shù)來繼續(xù)檢查。(5)在該工具的數(shù)據(jù)檢查系統(tǒng)中,缺乏具備嚴密理論依據(jù)的索引選擇算法,只是片面地選擇唯一索引或主索引,另外,該工具對沒有唯一索引的表簡單地進行了放棄,這在云計算場景下是對用戶數(shù)據(jù)的不負責任。綜上,現(xiàn)有技術(shù)在進行數(shù)據(jù)庫遍歷時,控制iops資源占比的方法不夠精確、細致、安全,且存在一些不起實際作用的設(shè)定,影響用戶體驗。技術(shù)實現(xiàn)要素:本申請的一個目的是提供一種用于數(shù)據(jù)庫遍歷的方法與設(shè)備,以解決在遍歷過程中控制iops資源的問題。根據(jù)本申請的一個方面,提供了一種數(shù)據(jù)庫遍歷方法,包括:獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。根據(jù)本申請的另一個方面,提供了一種數(shù)據(jù)庫遍歷設(shè)備,包括:獲取裝置,用于獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;塊遍歷裝置,用于基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。此外,本申請還提供了一種數(shù)據(jù)庫遍歷設(shè)備,包括:處理器;以及被安排成存儲計算機可執(zhí)行指令的存儲器,所述可執(zhí)行指令在被執(zhí)行時使所述處理器:獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;以及基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。與現(xiàn)有技術(shù)相比,本申請先獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引,其中,通過所述目標索引進行遍歷時的iops最??;然后,基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,通過確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息來達到精確控制iops的目的,提升用戶體驗。進一步地,本申請在當前數(shù)據(jù)塊為所述數(shù)據(jù)表中的最后一塊時,結(jié)束所述數(shù)據(jù)表的遍歷操作,從而避免遍歷進入死循環(huán),提升安全性。進一步地,本申請在根據(jù)所述期望塊時間確定所述下一數(shù)據(jù)塊的塊尺寸信息中,當增加所述下一數(shù)據(jù)塊的塊尺寸信息時采用緩慢增長,當需要減少所述下一數(shù)據(jù)塊的塊尺寸信息時采用快速減小,來實現(xiàn)對iops更加精確的控制。附圖說明通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:圖1示出根據(jù)本申請一個方面的一種用于數(shù)據(jù)庫遍歷的方法流程圖;圖2示出根據(jù)本申請一個優(yōu)選實施例的一種用于數(shù)據(jù)庫遍歷的方法流程圖;圖3示出根據(jù)本申請另一個方面的一種用于數(shù)據(jù)庫遍歷的設(shè)備示意圖;圖4示出根據(jù)本申請一個優(yōu)選實施例的一種用于數(shù)據(jù)庫遍歷的設(shè)備示意圖;圖5示出了采用本申請實施例提供的方案對數(shù)據(jù)庫進行遍歷時的處理過程示意圖;圖6示出了對數(shù)據(jù)庫進行遍歷時選取目標索引的過程示意圖;圖7示出了對數(shù)據(jù)表中的數(shù)據(jù)塊進行遍歷的處理流程示意圖;圖8示出了對數(shù)據(jù)表中的數(shù)據(jù)塊進行遍歷時,根據(jù)不同情況確定相應的緩沖信息的示意圖;圖9示出了本申請實施例提供的另一種數(shù)據(jù)庫遍歷設(shè)備的結(jié)構(gòu)示意圖;附圖中相同或相似的附圖標記代表相同或相似的部件。具體實施方式下面結(jié)合附圖對本申請作進一步詳細描述。在本申請一個典型的配置中,終端、服務網(wǎng)絡(luò)的設(shè)備和可信方均包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。圖1示出根據(jù)本申請一個方面的一種用于數(shù)據(jù)庫遍歷的方法流程圖。該方法包括步驟s11和步驟s12。具體地,在步驟s11中,設(shè)備1獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;在步驟s12中,設(shè)備1基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。在此,所述設(shè)備1包括但不限于用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備其包括但不限于任何一種可與用戶通過觸摸板進行人機交互的移動電子產(chǎn)品,例如智能手機、平板電腦等,所述移動電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、ios操作系統(tǒng)等。其中,所述網(wǎng)絡(luò)設(shè)備包括一種能夠按照事先設(shè)定或存儲的指令,自動進行數(shù)值計算和信息處理的電子設(shè)備,其硬件包括但不限于微處理器、專用集成電路(asic)、可編程門陣列(fpga)、數(shù)字處理器(dsp)、嵌入式設(shè)備等。所述網(wǎng)絡(luò)設(shè)備其包括但不限于計算機、網(wǎng)絡(luò)主機、單個網(wǎng)絡(luò)服務器、多個網(wǎng)絡(luò)服務器集或多個服務器構(gòu)成的云;在此,云由基于云計算(cloudcomputing)的大量計算機或網(wǎng)絡(luò)服務器構(gòu)成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個虛擬超級計算機。所述網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、vpn網(wǎng)絡(luò)、無線自組織網(wǎng)絡(luò)(adhoc網(wǎng)絡(luò))等。優(yōu)選地,設(shè)備1還可以是運行于所述用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)設(shè)備、觸摸終端或網(wǎng)絡(luò)設(shè)備與觸摸終端通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備上的腳本程序。當然,本領(lǐng)域技術(shù)人員應能理解上述設(shè)備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設(shè)備1如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。設(shè)備1的各個步驟之間是持續(xù)不斷工作的。具體地,在步驟s11中,設(shè)備1持續(xù)獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;在步驟s12中,設(shè)備1持續(xù)基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息;直至所述設(shè)備1停止工作。在步驟s11中,設(shè)備1獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引。在此,所述數(shù)據(jù)庫包括關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫,例如mysql數(shù)據(jù)庫(一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等。在本實施例中,主要以mysql數(shù)據(jù)庫及sql(structuredquerylanguage,結(jié)構(gòu)化查詢語言)語句為例進行說明。當然,本領(lǐng)域技術(shù)人員應能理解上述mysql數(shù)據(jù)庫僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的數(shù)據(jù)庫如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。在此,所述數(shù)據(jù)庫中包含若干個所述待遍歷的數(shù)據(jù)表。在優(yōu)選的實施例中,所述目標索引包括遍歷時iops(input/outputoperationspersecond,每秒進行讀寫操作的次數(shù),表示訪問磁盤的頻率)最小的索引,即按照所述目標索引進行數(shù)據(jù)庫遍歷時iops最小,消耗的磁盤資源最少。優(yōu)選地,在步驟s11中,設(shè)備1若數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表已存在所有字段非空的一個或多個唯一索引,則從所述一個或多個唯一索引中擇一作為所述數(shù)據(jù)表對應的目標索引;否則,為所述數(shù)據(jù)表建立唯一索引以作為所述目標索引。例如,對于mysql數(shù)據(jù)庫的innodb引擎而言,每個數(shù)據(jù)表都有一個聚集索引(clusteredindex),數(shù)據(jù)表上的其余非聚集索引均為二級索引,又叫輔助索引。如果數(shù)據(jù)表上定義有主鍵,則該主鍵對應的索引是聚集索引。在此,聚集索引即為所述目標索引。因為按照二級索引進行遍歷會回表到聚集索引,增加iops,只有按照聚集索引進行遍歷才能使遍歷時的iops最小。如果用戶沒有為數(shù)據(jù)表定義主鍵時,可以取第一個唯一(unique)索引且字段非空(notnull)列作為主鍵,innodb引擎將該主鍵對應的所有字段非空的唯一索引作為聚集索引(即目標索引)。其中,唯一索引是指與該索引相關(guān)聯(lián)的幾個字段組成的值在數(shù)據(jù)表中唯一。在此,所述待遍歷的數(shù)據(jù)表中所述所有字段非空的唯一索引可能不止一個,可從所述一個或多個唯一索引中擇一作為所述數(shù)據(jù)表對應的目標索引。若不存在所有字段非空的唯一索引,則為所述數(shù)據(jù)表建立唯一索引(因為該索引不對用戶公開,在此也稱其為隱式索引)以作為所述目標索引。具體地,當不存在所有字段非空的唯一索引時,mysql數(shù)據(jù)庫內(nèi)部會生成一個帶有自增的id(標識號)的內(nèi)部索引以便于存儲數(shù)據(jù),在此,建立一個帶有自增的6字節(jié)id的隱式索引,該隱式索引與mysql數(shù)據(jù)庫的內(nèi)部索引在關(guān)系上是連續(xù)且一一對應的,按照所述隱式索引進行遍歷會回表到mysql數(shù)據(jù)庫的內(nèi)部索引,但是回表代價極低,可以認為按照所述隱式索引進行遍歷時的iops與按照mysql數(shù)據(jù)庫的內(nèi)部索引進行遍歷時的iops幾乎相同。例如,對于mysql數(shù)據(jù)庫的myisam引擎而言,所有的索引不存在聚集索引和非聚集索引的區(qū)別,但是所有字段非空的唯一索引仍是遍歷時的最佳選擇,因為按照所有字段非空的唯一索引進行遍歷時掃描的數(shù)據(jù)量比按照其他普通索引進行遍歷時少很多。其中,唯一索引是指與該索引相關(guān)聯(lián)的幾個字段組成的值在數(shù)據(jù)表中唯一。假設(shè)要遍歷一張數(shù)據(jù)表中的1000行記錄,如果采用所有字段非空的唯一索引會掃描1000行記錄;而采用一個普通索引可能會掃描10000行記錄,甚至是全表掃描,如此造成的iops將會很大。在此,所述待遍歷的數(shù)據(jù)表中所述所有字段非空的唯一索引可能不止一個,可從所述一個或多個唯一索引中擇一作為所述數(shù)據(jù)表對應的目標索引。若不存在所有字段非空的唯一索引,則為所述數(shù)據(jù)表建立唯一索引(因為該索引不對用戶公開,在此也稱其為隱式索引)以作為所述目標索引。具體地,當不存在所有字段非空的唯一索引時,mysql數(shù)據(jù)庫內(nèi)部會生成一個帶有自增的id(標識號)的內(nèi)部索引以便于存儲數(shù)據(jù),在此,建立一個帶有自增的6字節(jié)id的隱式索引,該隱式索引與mysql數(shù)據(jù)庫的內(nèi)部索引不同,但在關(guān)系上是連續(xù)且一一對應的,按照所述隱式索引進行遍歷會回表到mysql數(shù)據(jù)庫的內(nèi)部索引,但是回表代價極低,可以認為按照所述隱式索引進行遍歷時的iops與按照mysql數(shù)據(jù)庫的內(nèi)部索引進行遍歷時的iops幾乎相同。當然,本領(lǐng)域技術(shù)人員應能理解上述innodb引擎及myisam引擎僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的數(shù)據(jù)庫引擎如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。在步驟s12中,設(shè)備1基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。在此,所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息包括下一數(shù)據(jù)塊包含的記錄行數(shù)信息;可以根據(jù)當前數(shù)據(jù)塊的sql執(zhí)行時間信息確定下一數(shù)據(jù)塊的塊尺寸信息,在遍歷過程中實時調(diào)整所述下一數(shù)據(jù)塊的塊尺寸信息。并依次對各數(shù)據(jù)塊分別執(zhí)行塊遍歷操作,直至遍歷完最后一塊,結(jié)束對所述數(shù)據(jù)表的遍歷。優(yōu)選地,所述塊遍歷操作包括:基于所述目標索引確定所述數(shù)據(jù)表中待遍歷的當前數(shù)據(jù)塊的塊范圍信息,根據(jù)所述塊范圍信息遍歷所述當前數(shù)據(jù)塊;若所述當前數(shù)據(jù)塊為所述數(shù)據(jù)表中的最后一塊,結(jié)束所述數(shù)據(jù)表的遍歷操作;否則,對所述數(shù)據(jù)表中下一數(shù)據(jù)塊執(zhí)行塊遍歷操作。在此,根據(jù)所述塊范圍信息逐個遍歷各數(shù)據(jù)塊,直至遍歷完所述數(shù)據(jù)表中的全部數(shù)據(jù)塊,結(jié)束對所述數(shù)據(jù)表的遍歷。在優(yōu)選的實施例中,為避免重復遍歷已遍歷過的數(shù)據(jù)塊,進入死循環(huán),可以采取如下措施:(1)不使用非唯一索引(該索引相關(guān)聯(lián)的幾個字段組成的值在表里不唯一)進行數(shù)據(jù)遍歷;(2)在發(fā)現(xiàn)重復時,結(jié)束對所述數(shù)據(jù)表的遍歷;(3)當所述數(shù)據(jù)表中存儲的數(shù)據(jù)為字符串格式時,為避免因亂碼進入死循環(huán),可在查詢時設(shè)置正確的字符集(各數(shù)據(jù)庫類型不同),并采用二進制、八進制或十六進制等形式讀取數(shù)據(jù),具體在mysql數(shù)據(jù)庫中則可采用hex語法。更優(yōu)選地,所述基于所述目標索引確定所述數(shù)據(jù)表中待遍歷的當前數(shù)據(jù)塊的塊范圍信息包括:基于所述目標索引,以及所述數(shù)據(jù)表中待遍歷的當前數(shù)據(jù)塊的起始位置信息、所述當前數(shù)據(jù)塊的塊尺寸信息,確定當前數(shù)據(jù)塊的塊范圍信息。例如,假設(shè)有一張如下結(jié)構(gòu)的數(shù)據(jù)表:createtable`wp_term_relationships`(`object_id`bigint(20)unsignednotnulldefault'0',`term_taxonomy_id`bigint(20)unsignednotnulldefault'0',`term_order`int(11)notnulldefault'0',primarykey(`object_id`,`term_taxonomy_id`),key`term_taxonomy_id`(`term_taxonomy_id`))engine=innodbdefaultcharset=utf8在該數(shù)據(jù)表中,由字段`object_id`和`term_taxonomy_id`組成的索引即為所述目標索引。開始遍歷時,首先,通過sql語句:select`object_id`,`term_taxonomy_id`from`wp_term_relationships`limit1;可以找到該數(shù)據(jù)表的第一行記錄作為第一個數(shù)據(jù)塊的下界(即當前數(shù)據(jù)塊的起始位置信息)。接下來,需要找到第一個數(shù)據(jù)塊的上界,假設(shè)在遍歷初始化時設(shè)定第一個數(shù)據(jù)塊有n行(即所述當前數(shù)據(jù)塊的尺寸信息)記錄,那么大于等于下界的前n行記錄中的最大值即為當前(第一個)數(shù)據(jù)塊的上界。假設(shè)通過上述sql語句找到的下界為(1,2),那么找上界也就是要找(`object_id`,`term_taxonomy_id`)>=(1,2)的前n行記錄中的最大值,在mysql數(shù)據(jù)庫中,可以通過如下的sql語句來實現(xiàn):where`object_id`>1or(where`object_id`=1and`term_taxonomy_id`>=2)limitn-1,2;其中,將大于等于下界(1,2)分成了兩種情況:一種是第一個字段`object_id`比1大;另一種是第一個字段`object_id`等于1,但是第二個字段`term_taxonomy_id`>=2。類似的,假定上界是(500,1000),小于等于上界也可以分成兩種情況:一種是第一個字段`object_id`比500??;另一種是第一個字段`object_id`等于500,但是第二個字段`term_taxonomy_id`<=1000。其中,“l(fā)imitn-1,2”指的是找到比下界大的第n行記錄和第n+1行記錄,這兩行記錄分別對應當前數(shù)據(jù)塊的上界和下一數(shù)據(jù)塊的下界。對于單字段索引或多字段索引,均可以采用類似方法確定所述塊范圍信息。在確定所述塊范圍信息后,可以通過如下的sql語句來進行遍歷:where(`object_id`>1or(where`object_id`=1and`term_taxonomy_id`>=2))and(`object_id`<500or(where`object_id`=500and`term_taxonomy_id`<=1000))可以根據(jù)下一數(shù)據(jù)塊的下界和下一數(shù)據(jù)塊包含的記錄行數(shù)m,對下一數(shù)據(jù)塊執(zhí)行所述塊遍歷操作。并依此對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行所述塊遍歷操作,直至遍歷完所述數(shù)據(jù)表中的全部數(shù)據(jù)塊。其中,若找不到下一數(shù)據(jù)塊的下界,則表示當前數(shù)據(jù)塊即為所述數(shù)據(jù)表中的最后一塊,結(jié)束對所述數(shù)據(jù)表的遍歷。在此,可以根據(jù)具體需求選擇sql語句,在遍歷過程中獲取數(shù)據(jù)或校驗主庫和備庫的數(shù)據(jù)是否一致。優(yōu)選地,在步驟s12中,設(shè)備1根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。在此,所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息包括sql執(zhí)行時間后的休眠時間。例如,對每一數(shù)據(jù)塊執(zhí)行所述塊遍歷操作的時間需盡量短,因為sql執(zhí)行時間越短,對用戶的影響越小,過量使用用戶io(input/output,讀寫操作)資源的可能性也就越低。若借助cgroups(controlgroups,是linux內(nèi)核提供的一種可以限制、記錄、隔離進程組所使用的cpu、內(nèi)存、iops等物理資源的機制)來控制iops,假設(shè)每個sql執(zhí)行時間為0.1s,用戶的iops限制值為1000,每個sql至多占用100個io,若想把iops限制在100,只需在每個sql之后休眠9倍sql執(zhí)行時間即可。其中,在對數(shù)據(jù)庫的操作中,每個io能讀取的數(shù)據(jù)量一般是固定的,這個值不一定是操作系統(tǒng)的blocksize(塊大小)值,但肯定小于blocksize值,以mysql數(shù)據(jù)庫為例,每個io的數(shù)據(jù)量大小為16k字節(jié)。優(yōu)選地,所述根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息包括:根據(jù)塊遍歷的回表信息,以及所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。例如,若遍歷當前數(shù)據(jù)表時由于無合適索引等因素,可能會引起回表;如果找到合適的索引,則遍歷時無回表或者極少回表。對于mysql數(shù)據(jù)庫而言,若所述目標索引為單字段索引,通常在遍歷時無回表或極少回表,則根據(jù)所述塊尺寸信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息;若所述目標索引為多字段索引,通常在遍歷時并不能將多個字段都用到數(shù)據(jù)定位上,可能造成較多回表,則借助cgroups來控制iops,并確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。更優(yōu)選地,所述根據(jù)塊遍歷的回表信息,以及所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息,包括:當塊遍歷的回表次數(shù)低于預定閾值,根據(jù)所述當前數(shù)據(jù)塊的塊尺寸信息確定對應安全執(zhí)行時間信息,并根據(jù)所述安全執(zhí)行時間信息及所述sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息;或者,當塊遍歷的回表次數(shù)高于預定閾值,根據(jù)所述sql執(zhí)行時間信息及對應的iops期望信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。例如,若參數(shù)名execute_sql_time表示當前數(shù)據(jù)塊的sql執(zhí)行時間,參數(shù)名current_chunk_size表示當前數(shù)據(jù)塊包含的記錄行數(shù),參數(shù)名avg_row_length表示數(shù)據(jù)塊的行平均字節(jié)大小,參數(shù)名max_iops表示所述數(shù)據(jù)表對應的用戶的最大iops限制值,參數(shù)名iops_rate表示期望使用的iops占所述數(shù)據(jù)表對應的用戶的最大iops限制值的百分比(即iops期望信息),參數(shù)名bytes_per_io表示每個io(input/output,讀寫操作)所讀取的數(shù)據(jù)量字節(jié)大小,參數(shù)名limit_chunk_time表示安全執(zhí)行時間。當塊遍歷的回表次數(shù)低于預定閾值(例如在mysql數(shù)據(jù)庫中所述目標索引為單字段索引),則可根據(jù)公式limit_chunk_time=(current_chunk_size*avg_row_length)/(max_iops*iops_rate*bytes_per_io)預估所述安全執(zhí)行時間。如果參數(shù)execute_sql_time大于limit_chunk_time,則不需要緩沖;否則,需要緩沖limit_chunk_time–execute_sql_time,以保證遍歷操作的安全性。當塊遍歷的回表次數(shù)高于預定閾值(例如在mysql數(shù)據(jù)庫中所述目標索引為多字段索引),可以借助cgroups的控制,需要緩沖execute_sql_time*(1/iops_rate-1)。在此,cgroups是controlgroups的縮寫,是linux內(nèi)核提供的一種可以限制、記錄、隔離進程組所使用的物理資源(如cpu、內(nèi)存、iops等)的機制。優(yōu)選地,所述根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息還包括:根據(jù)所述sql執(zhí)行時間信息及所述當前數(shù)據(jù)塊對應的期望塊時間確定所述下一數(shù)據(jù)塊對應的期望塊時間;根據(jù)所述期望塊時間確定所述下一數(shù)據(jù)塊的塊尺寸信息。例如,接上例,若參數(shù)名expect_chunk_time表示遍歷一數(shù)據(jù)塊時期望的sql執(zhí)行時間(即所述期望塊時間)。理想的sql執(zhí)行時間應小于expect_chunk_time且無限接近于expect_chunk_time。在確定下一數(shù)據(jù)塊的塊尺寸信息之前,需先調(diào)整所述下一數(shù)據(jù)塊對應的期望時間,然后通過公式expect_chunk_time*(max_iops*iops_rate*bytes_per_io)/avg_row_length計算得到下一數(shù)據(jù)塊所包含的記錄行數(shù)(即所述下一數(shù)據(jù)塊的塊尺寸信息)。更優(yōu)選地,所述根據(jù)所述期望塊時間確定所述下一數(shù)據(jù)塊的塊尺寸信息包括:增加所述下一數(shù)據(jù)塊的塊尺寸信息時采用緩慢增長;減少所述下一數(shù)據(jù)塊的塊尺寸信息時采用快速減小。例如,接上例,若遍歷當前數(shù)據(jù)塊的sql執(zhí)行時間execute_sql_time不超過期望塊時間expect_chunk_time時,需增加下一數(shù)據(jù)塊的記錄行數(shù)(即增加所述下一數(shù)據(jù)塊的塊尺寸信息);若遍歷當前數(shù)據(jù)塊的sql執(zhí)行時間execute_sql_time超過期望塊時間expect_chunk_time時,需減小下一數(shù)據(jù)塊的記錄行數(shù)(即減少所述下一數(shù)據(jù)塊的塊尺寸信息)。在此,因下一數(shù)據(jù)塊的記錄行數(shù)與所述下一數(shù)據(jù)塊對應的期望時間成正比,故通過調(diào)整行數(shù)也可調(diào)整所述下一數(shù)據(jù)塊對應的期望時間。在優(yōu)選的實施例中,在增加下一數(shù)據(jù)塊的記錄行數(shù)時不應突增,而在減少下一數(shù)據(jù)塊的記錄行數(shù)時應該突減,即增加所述下一數(shù)據(jù)塊的塊尺寸信息時采用緩慢增長,減少所述下一數(shù)據(jù)塊的塊尺寸信息時采用快速減小。在此,可以采用一個增長序列,比如菲波拉切數(shù)列1、1+1、1+1+1、1+1+1+2、1+1+1+2+3、1+1+1+2+3+5……,假設(shè)第一個數(shù)據(jù)塊包含1行記錄,如需增加行數(shù)可以在第二個數(shù)據(jù)塊增加1行(即第二個數(shù)據(jù)塊包含2行記錄),假設(shè)還需增加行數(shù),可以在第三個數(shù)據(jù)塊增加1行(即第二個數(shù)據(jù)塊包含3行記錄),在第四個數(shù)據(jù)塊增加2行(即第二個數(shù)據(jù)塊包含5行記錄),依此類推。如果需要減少下一數(shù)據(jù)塊的記錄行數(shù),比如expect_chunk_time為0.1s,execute_sql_time為0.2s,current_chunk_size為1000行,則下一數(shù)據(jù)塊應為500行,但是每次減小之后如果再增長,則又要從增長數(shù)列的第一個值開始,即如果下一數(shù)據(jù)塊再增加行數(shù),應為501行。圖2示出根據(jù)本申請一個優(yōu)選實施例的一種用于數(shù)據(jù)庫遍歷的方法流程圖。該方法包括步驟s11’、步驟s12’和步驟s13’。在此,步驟s11’、步驟s12’與圖1中步驟s11、步驟s12的內(nèi)容相同或基本相同,為簡明起見,不再贅述。具體地,在步驟s13’中,設(shè)備1對所述數(shù)據(jù)庫中待遍歷的其他數(shù)據(jù)表執(zhí)行所述步驟s11’及步驟s12’。在此,依此對所述數(shù)據(jù)庫中的各個待遍歷的數(shù)據(jù)表執(zhí)行所述步驟s11’及步驟s12’,直至遍歷完所述數(shù)據(jù)庫中的全部待遍歷的數(shù)據(jù)表,結(jié)束對所述數(shù)據(jù)庫的遍歷。圖3示出根據(jù)本申請另一個方面的一種用于數(shù)據(jù)庫遍歷的設(shè)備1,其中,設(shè)備1包括獲取裝置11和塊遍歷裝置12。具體地,所述獲取裝置11獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;所述塊遍歷裝置12基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。在此,所述設(shè)備1包括但不限于用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備其包括但不限于任何一種可與用戶通過觸摸板進行人機交互的移動電子產(chǎn)品,例如智能手機、平板電腦等,所述移動電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、ios操作系統(tǒng)等。其中,所述網(wǎng)絡(luò)設(shè)備包括一種能夠按照事先設(shè)定或存儲的指令,自動進行數(shù)值計算和信息處理的電子設(shè)備,其硬件包括但不限于微處理器、專用集成電路(asic)、可編程門陣列(fpga)、數(shù)字處理器(dsp)、嵌入式設(shè)備等。所述網(wǎng)絡(luò)設(shè)備其包括但不限于計算機、網(wǎng)絡(luò)主機、單個網(wǎng)絡(luò)服務器、多個網(wǎng)絡(luò)服務器集或多個服務器構(gòu)成的云;在此,云由基于云計算(cloudcomputing)的大量計算機或網(wǎng)絡(luò)服務器構(gòu)成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個虛擬超級計算機。所述網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、vpn網(wǎng)絡(luò)、無線自組織網(wǎng)絡(luò)(adhoc網(wǎng)絡(luò))等。優(yōu)選地,設(shè)備1還可以是運行于所述用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)設(shè)備、觸摸終端或網(wǎng)絡(luò)設(shè)備與觸摸終端通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備上的腳本程序。當然,本領(lǐng)域技術(shù)人員應能理解上述設(shè)備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設(shè)備1如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。上述各裝置之間是持續(xù)不斷工作的,在此,本領(lǐng)域技術(shù)人員應理解“持續(xù)”是指上述各裝置分別實時地或者按照設(shè)定的或?qū)崟r調(diào)整的工作模式要求,例如所述獲取裝置11持續(xù)獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;所述塊遍歷裝置12持續(xù)基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息;直至所述設(shè)備1停止工作。所述獲取裝置11獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引。在此,所述數(shù)據(jù)庫包括關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫,例如mysql數(shù)據(jù)庫(一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等。在本實施例中,主要以mysql數(shù)據(jù)庫及sql(structuredquerylanguage,結(jié)構(gòu)化查詢語言)語句為例進行說明。當然,本領(lǐng)域技術(shù)人員應能理解上述mysql數(shù)據(jù)庫僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的數(shù)據(jù)庫如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。在此,所述數(shù)據(jù)庫中包含若干個所述待遍歷的數(shù)據(jù)表。在優(yōu)選的實施例中,所述目標索引包括遍歷時iops(input/outputoperationspersecond,每秒進行讀寫操作的次數(shù),表示訪問磁盤的頻率)最小的索引,即按照所述目標索引進行數(shù)據(jù)庫遍歷時iops最小,消耗的磁盤資源最少。優(yōu)選地,所述獲取裝置11若數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表已存在所有字段非空的一個或多個唯一索引,則從所述一個或多個唯一索引中擇一作為所述數(shù)據(jù)表對應的目標索引;否則,為所述數(shù)據(jù)表建立唯一索引以作為所述目標索引。例如,對于mysql數(shù)據(jù)庫的innodb引擎而言,每個數(shù)據(jù)表都有一個聚集索引(clusteredindex),數(shù)據(jù)表上的其余非聚集索引均為二級索引,又叫輔助索引。如果數(shù)據(jù)表上定義有主鍵,則該主鍵對應的索引是聚集索引。在此,聚集索引即為所述目標索引。因為按照二級索引進行遍歷會回表到聚集索引,增加iops,只有按照聚集索引進行遍歷才能使遍歷時的iops最小。如果用戶沒有為數(shù)據(jù)表定義主鍵時,可以取第一個唯一(unique)索引且字段非空(notnull)列作為主鍵,innodb引擎將該主鍵對應的所有字段非空的唯一索引作為聚集索引(即目標索引)。其中,唯一索引是指與該索引相關(guān)聯(lián)的幾個字段組成的值在數(shù)據(jù)表中唯一。在此,所述待遍歷的數(shù)據(jù)表中所述所有字段非空的唯一索引可能不止一個,可從所述一個或多個唯一索引中擇一作為所述數(shù)據(jù)表對應的目標索引。若不存在所有字段非空的唯一索引,則為所述數(shù)據(jù)表建立唯一索引(因為該索引不對用戶公開,在此也稱其為隱式索引)以作為所述目標索引。具體地,當不存在所有字段非空的唯一索引時,mysql數(shù)據(jù)庫內(nèi)部會生成一個帶有自增的id(標識號)的內(nèi)部索引以便于存儲數(shù)據(jù),在此,建立一個帶有自增的6字節(jié)id的隱式索引,該隱式索引與mysql數(shù)據(jù)庫的內(nèi)部索引在關(guān)系上是連續(xù)且一一對應的,按照所述隱式索引進行遍歷會回表到mysql數(shù)據(jù)庫的內(nèi)部索引,但是回表代價極低,可以認為按照所述隱式索引進行遍歷時的iops與按照mysql數(shù)據(jù)庫的內(nèi)部索引進行遍歷時的iops幾乎相同。例如,對于mysql數(shù)據(jù)庫的myisam引擎而言,所有的索引不存在聚集索引和非聚集索引的區(qū)別,但是所有字段非空的唯一索引仍是遍歷時的最佳選擇,因為按照所有字段非空的唯一索引進行遍歷時掃描的數(shù)據(jù)量比按照其他普通索引進行遍歷時少很多。其中,唯一索引是指與該索引相關(guān)聯(lián)的幾個字段組成的值在數(shù)據(jù)表中唯一。假設(shè)要遍歷一張數(shù)據(jù)表中的1000行記錄,如果采用所有字段非空的唯一索引會掃描1000行記錄;而采用一個普通索引可能會掃描10000行記錄,甚至是全表掃描,如此造成的iops將會很大。在此,所述待遍歷的數(shù)據(jù)表中所述所有字段非空的唯一索引可能不止一個,可從所述一個或多個唯一索引中擇一作為所述數(shù)據(jù)表對應的目標索引。若不存在所有字段非空的唯一索引,則為所述數(shù)據(jù)表建立唯一索引(因為該索引不對用戶公開,在此也稱其為隱式索引)以作為所述目標索引。具體地,當不存在所有字段非空的唯一索引時,mysql數(shù)據(jù)庫內(nèi)部會生成一個帶有自增的id(標識號)的內(nèi)部索引以便于存儲數(shù)據(jù),在此,建立一個帶有自增的6字節(jié)id的隱式索引,該隱式索引與mysql數(shù)據(jù)庫的內(nèi)部索引不同,但在關(guān)系上是連續(xù)且一一對應的,按照所述隱式索引進行遍歷會回表到mysql數(shù)據(jù)庫的內(nèi)部索引,但是回表代價極低,可以認為按照所述隱式索引進行遍歷時的iops與按照mysql數(shù)據(jù)庫的內(nèi)部索引進行遍歷時的iops幾乎相同。當然,本領(lǐng)域技術(shù)人員應能理解上述innodb引擎及myisam引擎僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的數(shù)據(jù)庫引擎如可適用于本申請,也應包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。所述塊遍歷裝置12基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。在此,所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息包括下一數(shù)據(jù)塊包含的記錄行數(shù)信息;可以根據(jù)當前數(shù)據(jù)塊的sql執(zhí)行時間信息確定下一數(shù)據(jù)塊的塊尺寸信息,在遍歷過程中實時調(diào)整所述下一數(shù)據(jù)塊的塊尺寸信息。并依次對各數(shù)據(jù)塊分別執(zhí)行塊遍歷操作,直至遍歷完最后一塊,結(jié)束對所述數(shù)據(jù)表的遍歷。優(yōu)選地,所述塊遍歷操作包括:基于所述目標索引確定所述數(shù)據(jù)表中待遍歷的當前數(shù)據(jù)塊的塊范圍信息,根據(jù)所述塊范圍信息遍歷所述當前數(shù)據(jù)塊;若所述當前數(shù)據(jù)塊為所述數(shù)據(jù)表中的最后一塊,結(jié)束所述數(shù)據(jù)表的遍歷操作;否則,對所述數(shù)據(jù)表中下一數(shù)據(jù)塊執(zhí)行塊遍歷操作。在此,根據(jù)所述塊范圍信息逐個遍歷各數(shù)據(jù)塊,直至遍歷完所述數(shù)據(jù)表中的全部數(shù)據(jù)塊,結(jié)束對所述數(shù)據(jù)表的遍歷。在優(yōu)選的實施例中,為避免重復遍歷已遍歷過的數(shù)據(jù)塊,進入死循環(huán),可以采取如下措施:(1)不使用非唯一索引(該索引相關(guān)聯(lián)的幾個字段組成的值在表里不唯一)進行數(shù)據(jù)遍歷;(2)在發(fā)現(xiàn)重復時,結(jié)束對所述數(shù)據(jù)表的遍歷;(3)當所述數(shù)據(jù)表中存儲的數(shù)據(jù)為字符串格式時,為避免因亂碼進入死循環(huán),可在查詢時設(shè)置正確的字符集(各數(shù)據(jù)庫類型不同),并采用二進制、八進制或十六進制等形式讀取數(shù)據(jù),具體在mysql數(shù)據(jù)庫中則可采用hex語法。更優(yōu)選地,所述基于所述目標索引確定所述數(shù)據(jù)表中待遍歷的當前數(shù)據(jù)塊的塊范圍信息包括:基于所述目標索引,以及所述數(shù)據(jù)表中待遍歷的當前數(shù)據(jù)塊的起始位置信息、所述當前數(shù)據(jù)塊的塊尺寸信息,確定當前數(shù)據(jù)塊的塊范圍信息。例如,假設(shè)有一張如下結(jié)構(gòu)的數(shù)據(jù)表:createtable`wp_term_relationships`(`object_id`bigint(20)unsignednotnulldefault'0',`term_taxonomy_id`bigint(20)unsignednotnulldefault'0',`term_order`int(11)notnulldefault'0',primarykey(`object_id`,`term_taxonomy_id`),key`term_taxonomy_id`(`term_taxonomy_id`))engine=innodbdefaultcharset=utf8在該數(shù)據(jù)表中,由字段`object_id`和`term_taxonomy_id`組成的索引即為所述目標索引。開始遍歷時,首先,通過sql語句:select`object_id`,`term_taxonomy_id`from`wp_term_relationships`limit1;可以找到該數(shù)據(jù)表的第一行記錄作為第一個數(shù)據(jù)塊的下界(即當前數(shù)據(jù)塊的起始位置信息)。接下來,需要找到第一個數(shù)據(jù)塊的上界,假設(shè)在遍歷初始化時設(shè)定第一個數(shù)據(jù)塊有n行(即所述當前數(shù)據(jù)塊的尺寸信息)記錄,那么大于等于下界的前n行記錄中的最大值即為當前(第一個)數(shù)據(jù)塊的上界。假設(shè)通過上述sql語句找到的下界為(1,2),那么找上界也就是要找(`object_id`,`term_taxonomy_id`)>=(1,2)的前n行記錄中的最大值,在mysql數(shù)據(jù)庫中,可以通過如下的sql語句來實現(xiàn):where`object_id`>1or(where`object_id`=1and`term_taxonomy_id`>=2)limitn-1,2;其中,將大于等于下界(1,2)分成了兩種情況:一種是第一個字段`object_id`比1大;另一種是第一個字段`object_id`等于1,但是第二個字段`term_taxonomy_id`>=2。類似的,假定上界是(500,1000),小于等于上界也可以分成兩種情況:一種是第一個字段`object_id`比500??;另一種是第一個字段`object_id`等于500,但是第二個字段`term_taxonomy_id`<=1000。其中,“l(fā)imitn-1,2”指的是找到比下界大的第n行記錄和第n+1行記錄,這兩行記錄分別對應當前數(shù)據(jù)塊的上界和下一數(shù)據(jù)塊的下界。對于單字段索引或多字段索引,均可以采用類似方法確定所述塊范圍信息。在確定所述塊范圍信息后,可以通過如下的sql語句來進行遍歷:where(`object_id`>1or(where`object_id`=1and`term_taxonomy_id`>=2))and(`object_id`<500or(where`object_id`=500and`term_taxonomy_id`<=1000))可以根據(jù)下一數(shù)據(jù)塊的下界和下一數(shù)據(jù)塊包含的記錄行數(shù)m,對下一數(shù)據(jù)塊執(zhí)行所述塊遍歷操作。并依此對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行所述塊遍歷操作,直至遍歷完所述數(shù)據(jù)表中的全部數(shù)據(jù)塊。其中,若找不到下一數(shù)據(jù)塊的下界,則表示當前數(shù)據(jù)塊即為所述數(shù)據(jù)表中的最后一塊,結(jié)束對所述數(shù)據(jù)表的遍歷。在此,可以根據(jù)具體需求選擇sql語句,在遍歷過程中獲取數(shù)據(jù)或校驗主庫和備庫的數(shù)據(jù)是否一致。優(yōu)選地,所述塊遍歷裝置12根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。在此,所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息包括sql執(zhí)行時間后的休眠時間。例如,對每一數(shù)據(jù)塊執(zhí)行所述塊遍歷操作的時間需盡量短,因為sql執(zhí)行時間越短,對用戶的影響越小,過量使用用戶io(input/output,讀寫操作)資源的可能性也就越低。若借助cgroups(controlgroups,是linux內(nèi)核提供的一種可以限制、記錄、隔離進程組所使用的cpu、內(nèi)存、iops等物理資源的機制)來控制iops,假設(shè)每個sql執(zhí)行時間為0.1s,用戶的iops限制值為1000,每個sql至多占用100個io,若想把iops限制在100,只需在每個sql之后休眠9倍sql執(zhí)行時間即可。其中,在對數(shù)據(jù)庫的操作中,每個io能讀取的數(shù)據(jù)量一般是固定的,這個值不一定是操作系統(tǒng)的blocksize(塊大小)值,但肯定小于blocksize值,以mysql數(shù)據(jù)庫為例,每個io的數(shù)據(jù)量大小為16k字節(jié)。優(yōu)選地,所述根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息包括:根據(jù)塊遍歷的回表信息,以及所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。例如,若遍歷當前數(shù)據(jù)表時由于無合適索引等因素,可能會引起回表;如果找到合適的索引,則遍歷時無回表或者極少回表。對于mysql數(shù)據(jù)庫而言,若所述目標索引為單字段索引,通常在遍歷時無回表或極少回表,則根據(jù)所述塊尺寸信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息;若所述目標索引為多字段索引,通常在遍歷時并不能將多個字段都用到數(shù)據(jù)定位上,可能造成較多回表,則借助cgroups來控制iops,并確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。更優(yōu)選地,所述根據(jù)塊遍歷的回表信息,以及所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息,包括:當塊遍歷的回表次數(shù)低于預定閾值,根據(jù)所述當前數(shù)據(jù)塊的塊尺寸信息確定對應安全執(zhí)行時間信息,并根據(jù)所述安全執(zhí)行時間信息及所述sql執(zhí)行時間信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息;或者,當塊遍歷的回表次數(shù)高于預定閾值,根據(jù)所述sql執(zhí)行時間信息及對應的iops期望信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息。例如,若參數(shù)名execute_sql_time表示當前數(shù)據(jù)塊的sql執(zhí)行時間,參數(shù)名current_chunk_size表示當前數(shù)據(jù)塊包含的記錄行數(shù),參數(shù)名avg_row_length表示數(shù)據(jù)塊的行平均字節(jié)大小,參數(shù)名max_iops表示所述數(shù)據(jù)表對應的用戶的最大iops限制值,參數(shù)名iops_rate表示期望使用的iops占所述數(shù)據(jù)表對應的用戶的最大iops限制值的百分比(即iops期望信息),參數(shù)名bytes_per_io表示每個io(input/output,讀寫操作)所讀取的數(shù)據(jù)量字節(jié)大小,參數(shù)名limit_chunk_time表示安全執(zhí)行時間。當塊遍歷的回表次數(shù)低于預定閾值(例如在mysql數(shù)據(jù)庫中所述目標索引為單字段索引),則可根據(jù)公式limit_chunk_time=(current_chunk_size*avg_row_length)/(max_iops*iops_rate*bytes_per_io)預估所述安全執(zhí)行時間。如果參數(shù)execute_sql_time大于limit_chunk_time,則不需要緩沖;否則,需要緩沖limit_chunk_time–execute_sql_time,以保證遍歷操作的安全性。當塊遍歷的回表次數(shù)高于預定閾值(例如在mysql數(shù)據(jù)庫中所述目標索引為多字段索引),可以借助cgroups的控制,需要緩沖execute_sql_time*(1/iops_rate-1)。在此,cgroups是controlgroups的縮寫,是linux內(nèi)核提供的一種可以限制、記錄、隔離進程組所使用的物理資源(如cpu、內(nèi)存、iops等)的機制。優(yōu)選地,所述根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息還包括:根據(jù)所述sql執(zhí)行時間信息及所述當前數(shù)據(jù)塊對應的期望塊時間確定所述下一數(shù)據(jù)塊對應的期望塊時間;根據(jù)所述期望塊時間確定所述下一數(shù)據(jù)塊的塊尺寸信息。例如,接上例,若參數(shù)名expect_chunk_time表示遍歷一數(shù)據(jù)塊時期望的sql執(zhí)行時間(即所述期望塊時間)。理想的sql執(zhí)行時間應小于expect_chunk_time且無限接近于expect_chunk_time。在確定下一數(shù)據(jù)塊的塊尺寸信息之前,需先調(diào)整所述下一數(shù)據(jù)塊對應的期望時間,然后通過公式expect_chunk_time*(max_iops*iops_rate*bytes_per_io)/avg_row_length計算得到下一數(shù)據(jù)塊所包含的記錄行數(shù)(即所述下一數(shù)據(jù)塊的塊尺寸信息)。更優(yōu)選地,所述根據(jù)所述期望塊時間確定所述下一數(shù)據(jù)塊的塊尺寸信息包括:增加所述下一數(shù)據(jù)塊的塊尺寸信息時采用緩慢增長;減少所述下一數(shù)據(jù)塊的塊尺寸信息時采用快速減小。例如,接上例,若遍歷當前數(shù)據(jù)塊的sql執(zhí)行時間execute_sql_time不超過期望塊時間expect_chunk_time時,需增加下一數(shù)據(jù)塊的記錄行數(shù)(即增加所述下一數(shù)據(jù)塊的塊尺寸信息);若遍歷當前數(shù)據(jù)塊的sql執(zhí)行時間execute_sql_time超過期望塊時間expect_chunk_time時,需減小下一數(shù)據(jù)塊的記錄行數(shù)(即減少所述下一數(shù)據(jù)塊的塊尺寸信息)。在此,因下一數(shù)據(jù)塊的記錄行數(shù)與所述下一數(shù)據(jù)塊對應的期望時間成正比,故通過調(diào)整行數(shù)也可調(diào)整所述下一數(shù)據(jù)塊對應的期望時間。在優(yōu)選的實施例中,在增加下一數(shù)據(jù)塊的記錄行數(shù)時不應突增,而在減少下一數(shù)據(jù)塊的記錄行數(shù)時應該突減,即增加所述下一數(shù)據(jù)塊的塊尺寸信息時采用緩慢增長,減少所述下一數(shù)據(jù)塊的塊尺寸信息時采用快速減小。在此,可以采用一個增長序列,比如菲波拉切數(shù)列1、1+1、1+1+1、1+1+1+2、1+1+1+2+3、1+1+1+2+3+5……,假設(shè)第一個數(shù)據(jù)塊包含1行記錄,如需增加行數(shù)可以在第二個數(shù)據(jù)塊增加1行(即第二個數(shù)據(jù)塊包含2行記錄),假設(shè)還需增加行數(shù),可以在第三個數(shù)據(jù)塊增加1行(即第二個數(shù)據(jù)塊包含3行記錄),在第四個數(shù)據(jù)塊增加2行(即第二個數(shù)據(jù)塊包含5行記錄),依此類推。如果需要減少下一數(shù)據(jù)塊的記錄行數(shù),比如expect_chunk_time為0.1s,execute_sql_time為0.2s,current_chunk_size為1000行,則下一數(shù)據(jù)塊應為500行,但是每次減小之后如果再增長,則又要從增長數(shù)列的第一個值開始,即如果下一數(shù)據(jù)塊再增加行數(shù),應為501行。圖4示出根據(jù)本申請一個優(yōu)選實施例的一種用于數(shù)據(jù)庫遍歷的設(shè)備1,其中,設(shè)備1包括獲取裝置11’、塊遍歷裝置12’和執(zhí)行裝置13’。在此,所述獲取裝置11’、塊遍歷裝置12’與圖3中獲取裝置11、塊遍歷裝置12的內(nèi)容相同或基本相同,為簡明起見,不再贅述。具體地,所述執(zhí)行裝置13’對所述數(shù)據(jù)庫中待遍歷的其他數(shù)據(jù)表執(zhí)行所述獲取裝置11’及塊遍歷裝置12’。在此,依此對所述數(shù)據(jù)庫中的各個待遍歷的數(shù)據(jù)表執(zhí)行所述獲取裝置11’及塊遍歷裝置12’,直至遍歷完所述數(shù)據(jù)庫中的全部待遍歷的數(shù)據(jù)表,結(jié)束對所述數(shù)據(jù)庫的遍歷。此外,本申請實施例還提供了另一種數(shù)據(jù)庫遍歷設(shè)備,所述設(shè)備的結(jié)構(gòu)如圖9所示,包括處理器910,以及被安排成存儲計算機可執(zhí)行指令的存儲器920。所述可執(zhí)行指令在被執(zhí)行時使所述處理器:獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引;以及基于所述目標索引對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,根據(jù)所述數(shù)據(jù)表中當前數(shù)據(jù)塊被塊遍歷后的sql執(zhí)行時間信息確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息。以mysql數(shù)據(jù)庫為例,采用上述方案對該mysql數(shù)據(jù)庫進行遍歷的處理過程如圖5所示。該mysql數(shù)據(jù)庫包含多張數(shù)據(jù)表,在對數(shù)據(jù)庫進行遍歷的過程中,需要完成對所有數(shù)據(jù)表的遍歷,具體處理過程如下:步驟s501,對于一張數(shù)據(jù)表,選出遍歷時iops消耗小的索引。在進行遍歷的過程中,若按照所述該索引進行,將使得iops小,消耗的磁盤資源也少。該索引即為所述的目標索引。在實際場景中,選取目標索引的過程如圖6所示,若mysql數(shù)據(jù)庫中的某一數(shù)據(jù)已經(jīng)存在了至少一種所有字段非空的唯一索引,則可以選擇其中一種,直接作為目標索引來使用,例如mysql數(shù)據(jù)庫的innodb引擎中的聚集索引;若不存在,則為所述數(shù)據(jù)表建立唯一索引(即隱式索引),以作為所述目標索引。步驟s502,在該數(shù)據(jù)表中找到按索引排序的第一個數(shù)據(jù)塊的上下界,然后按照上下界所確定的范圍遍歷這一數(shù)據(jù)塊;并且,在遍歷過程中,按照遍歷耗時、所屬數(shù)據(jù)表的特性等對數(shù)據(jù)塊的遍歷過程進行控制。實際場景中,對于數(shù)據(jù)表也需要將其分為多個數(shù)據(jù)塊進行遍歷,圖7示出了對數(shù)據(jù)塊實現(xiàn)遍歷的方式。例如,對于如下結(jié)構(gòu)的數(shù)據(jù)表:createtable`wp_term_relationships`(`object_id`bigint(20)unsignednotnulldefault'0',`term_taxonomy_id`bigint(20)unsignednotnulldefault'0',`term_order`int(11)notnulldefault'0',primarykey(`object_id`,`term_taxonomy_id`),key`term_taxonomy_id`(`term_taxonomy_id`))engine=innodbdefaultcharset=utf8對其中各個數(shù)據(jù)塊的遍歷過程可以在該數(shù)據(jù)表中,由字段`object_id`和`term_taxonomy_id`組成的索引即為目標索引。開始遍歷時,首先,通過sql語句:select`object_id`,`term_taxonomy_id`from`wp_term_relationships`limit1;可以找到該數(shù)據(jù)表的第一行記錄作為第一個數(shù)據(jù)塊的下界。然后,確定這個數(shù)據(jù)塊的大小,即這一數(shù)據(jù)塊的尺寸信息。例如在遍歷初始化時設(shè)定第一個數(shù)據(jù)塊有n行記錄,則可以確定該數(shù)據(jù)塊的大小為n行。由此,基于這個數(shù)據(jù)塊的下界和大小可以找到當前數(shù)據(jù)塊的上界和一下數(shù)據(jù)塊的下界。假設(shè)通過上述sql語句找到的下界為(1,2),那么找上界也就是要找(`object_id`,`term_taxonomy_id`)>=(1,2)的前n行記錄中的最大值,在mysql數(shù)據(jù)庫中,可以通過如下的sql語句來實現(xiàn):where`object_id`>1or(where`object_id`=1and`term_taxonomy_id`>=2)limitn-1,2;其中,將大于等于下界(1,2)分成了兩種情況:一種是第一個字段`object_id`比1大;另一種是第一個字段`object_id`等于1,但是第二個字段`term_taxonomy_id`>=2。類似的,假定上界是(500,1000),小于等于上界也可以分成兩種情況:一種是第一個字段`object_id`比500??;另一種是第一個字段`object_id`等于500,但是第二個字段`term_taxonomy_id`<=1000。其中,“l(fā)imitn-1,2”指的是找到比下界大的第n行記錄和第n+1行記錄,這兩行記錄分別對應當前數(shù)據(jù)塊的上界和下一數(shù)據(jù)塊的下界。在確定所述塊范圍信息(即數(shù)據(jù)塊的上下界)后,可以通過如下的sql語句來進行遍歷:where(`object_id`>1or(where`object_id`=1and`term_taxonomy_id`>=2))and(`object_id`<500or(where`object_id`=500and`term_taxonomy_id`<=1000))在完成一個數(shù)據(jù)塊的遍歷之后,可以根據(jù)下一數(shù)據(jù)塊的下界和下一數(shù)據(jù)塊包含的記錄行數(shù)m,對下一數(shù)據(jù)塊執(zhí)行所述塊遍歷操作。并依此對所述數(shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行所述塊遍歷操作,直至遍歷完所述數(shù)據(jù)表中的全部數(shù)據(jù)塊。在對所有數(shù)據(jù)塊的遍歷過程中,若找不到下一數(shù)據(jù)塊的下界,則表示當前數(shù)據(jù)塊即為所述數(shù)據(jù)表中的最后一個數(shù)據(jù)塊,從而結(jié)束對一張數(shù)據(jù)表的遍歷。在實際場景中,在完成某一數(shù)據(jù)塊的遍歷之后,如不是數(shù)據(jù)表中的最后一個數(shù)據(jù)塊,還可以進一步判定是否遍歷過程是否進入了死循環(huán),若未進入死循環(huán)則繼續(xù)一下數(shù)據(jù)塊的處理,若進入到了死循環(huán),則可以結(jié)束對所述數(shù)據(jù)表的遍歷,避免無效的處理開銷。步驟s503,在當前數(shù)據(jù)表遍歷完成之后,進行下一張數(shù)據(jù)表的遍歷。在實際場景中,若遍歷當前數(shù)據(jù)表時由于無合適索引等因素,可能會引起回表;如果找到合適的索引,則遍歷時無回表或者極少回表。對于mysql數(shù)據(jù)庫而言,若所述目標索引為單字段索引,通常在遍歷時無回表或極少回表,則根據(jù)所述塊尺寸信息確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息;若所述目標索引為多字段索引,通常在遍歷時并不能將多個字段都用到數(shù)據(jù)定位上,可能造成較多回表,則可以借助cgroups來控制iops,并確定所述當前數(shù)據(jù)塊被塊遍歷后的緩沖信息,具體如圖8所示。與現(xiàn)有技術(shù)相比,本申請先獲取數(shù)據(jù)庫中待遍歷的數(shù)據(jù)表所對應的目標索引,其中,通過所述目標索引進行遍歷時的iops最?。蝗缓螅谒瞿繕怂饕龑λ鰯?shù)據(jù)表中的各數(shù)據(jù)塊執(zhí)行塊遍歷操作,并在遍歷所述數(shù)據(jù)表的過程中,通過確定所述數(shù)據(jù)表中下一數(shù)據(jù)塊的塊尺寸信息來達到精確控制iops的目的,提升用戶體驗。進一步地,本申請在當前數(shù)據(jù)塊為所述數(shù)據(jù)表中的最后一塊時,結(jié)束所述數(shù)據(jù)表的遍歷操作,從而避免遍歷進入死循環(huán),提升安全性。進一步地,本申請在根據(jù)所述期望塊時間確定所述下一數(shù)據(jù)塊的塊尺寸信息中,當增加所述下一數(shù)據(jù)塊的塊尺寸信息時采用緩慢增長,當需要減少所述下一數(shù)據(jù)塊的塊尺寸信息時采用快速減小,來實現(xiàn)對iops更加精確的控制。需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(asic)、通用目的計算機或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,ram存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。另外,本申請的一部分可被應用為計算機程序產(chǎn)品,例如計算機程序指令,當其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術(shù)方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設(shè)備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本申請的多個實施例的方法和/或技術(shù)方案。對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應將權(quán)利要求中的任何附圖標記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
清流县| 顺平县| 武功县| 花垣县| 宜阳县| 个旧市| 遵义市| 綦江县| 化德县| 盐池县| 东山县| 江西省| 英吉沙县| 安塞县| 内黄县| 澳门| 北碚区| 夏河县| 安多县| 晋江市| 洛阳市| 永寿县| 海林市| 娄底市| 朝阳市| 团风县| 阿拉善盟| 泸定县| 天水市| 新乐市| 大关县| 宾阳县| 遂宁市| 宜宾县| 沾益县| 利川市| 成安县| 山阴县| 怀集县| 闵行区| 华安县|