❶ 存儲程序的作用 及優缺點
優點:1:插入
刪除
不需移動其他元素,
只需改變指針.
2:鏈表各個節點在內存中空間不要求連續!空間利用率高
缺點:1:訪問數組元素效率低,例如:訪問第100個元素,必須從頭節一直
next
99次
才能訪問到
2:數組的存儲空間連續,內存空間利用率低
❷ 鏈表存儲的優缺點
鏈表優點和缺點如下:
優點:在插入和刪除操作時,只需要修改被刪節點上一節點的鏈接地址,不需要移動元素,從而改進了在順序存儲結構中的插入和刪除操作需要移動大量元素的缺點。
缺點:
1、沒有解決連續存儲分配帶來的表長難以確定的問題。
2、失去了順序存儲結構隨機存取的特性。
(2)存儲的優缺點有哪些擴展閱讀:
線性表的鏈式存儲表示的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。
根據情況,也可以自己設計鏈表的其它擴展。但是一般不會在邊上附加數據,因為鏈表的點和邊基本上是一一對應的(除了第一個或者最後一個節點,但是也不會產生特殊情況)。
對於非線性的鏈表,可以參見相關的其他數據結構,例如樹、圖。另外有一種基於多個線性鏈表的數據結構:跳錶,插入、刪除和查找等基本操作的速度可以達到O(nlogn),和平衡二叉樹一樣。
其中存儲數據元素信息的域稱作數據域(設域名為data),存儲直接後繼存儲位置的域稱為指針域(設域名為next)。指針域中存儲的信息又稱做指針或鏈。
❸ 兩種存儲表示各有哪些主要優缺點
線性表可用順序表或鏈表存儲。
試問: 兩種存儲表示各有哪些主要優缺點?
答:順序存儲表示是將數據元素存放於一個連續的存儲空間中,實現順序存取或(按下標)直接存取。它的存儲效率高,存取速度快。但它的空間大小一經定義,在程序整個運行期間不會發生改變,因此,不易擴充。同時,由於在插入或刪除時,為保持原有次序,平均需要移動一半(或近一半)元素,修改效率不高。
鏈接存儲表示的存儲空間一般在程序的運行過程中動態分配和釋放,且只要存儲器中還有空間,就不會產生存儲溢出的問題。同時在插入和刪除時不需要保持數據元素原來的物理順序,只需要保持原來的邏輯順序,因此不必移動數據,只需修改它們的鏈接指針,修改效率較高。但存取表中的數據元素時,只能循鏈順序訪問,因此存取效率不高。
❹ 順序存儲結構和鏈式存儲結構的優缺點
存儲空間
順序存儲結構是要求事先分配存儲空間的,即靜態分配,所以難以估計存儲空間的大小。估計過大會造成浪費,估計太小又容易造成空間溢出。
而鏈式存儲結構的存儲空間是動態分配的,只要計算機內存空間還有空閑,就不會發生溢出。
另外還可以從存儲密度的角度考慮,存儲密度的定義公式為:一般來說,存儲密度越大,存儲空間的利用率就越高。
顯然,順序存儲結構的存儲密度為1,而鏈式存儲結構的存儲密度小於1。
運算時間
順序表是一種順序存儲結構,對表中任一結點都可以在O(1)時間復雜度下直接訪問;而訪問鏈表中的某個結點時,必須從頭指針開始沿著鏈表順序查找,時間復雜度為O(n)。
鏈表順序查找,時間復雜度為O(n)。
因此,如果對線性表的操作以查找為主,則採用順序存儲結構較好;若以插入、刪除為主,則採用鏈式存儲結構為宜。
❺ 線性表兩種 存儲結構各自的優缺點有哪些
線性表的鏈式存儲結構:
優點:
插入和刪除不需要移動插入時只需要對插入位置後的一個元素進行操作,不需要大量的移動元素。空間有效利用高。
缺點:
大量訪問操作時不如順序存儲結構,因為每次都需要從頭開始遍歷整個線性表直到找到相應的元素為止。
線性表的順序存儲結構:
優點:
可隨機存取表中任一元素。因為有下標可以操作可以快速的定位到指定位置的元素,但是不知道位置的話也需要順序遍歷。
缺點:
插入或刪除操作時,需大量移動元素。合適在很少進行插入和刪除運算的情況下。
(5)存儲的優缺點有哪些擴展閱讀:
線性表的特徵
集合中必存在唯一的一個「第一元素」。
集合中必存在唯一的一個 「最後元素」 。
除最後一個元素之外,均有唯一的後繼(後件)。
除第一個元素之外,均有唯一的前驅(前件)。
線性表的基本操作
MakeEmpty(L) 這是一個將L變為空表的方法。
Length(L) 返回表L的長度,即表中元素個數。
Get(L,i) 這是一個函數,函數值為L中位置i處的元素(1≤i≤n)。
Prior(L,i) 取i的前驅元素。
Next(L,i) 取i的後繼元素。
Locate(L,x) 這是一個函數,函數值為元素x在L中的位置。
Insert(L,i,x)在表L的位置i處插入元素x,將原占據位置i的元素及後面的元素都向後推一個位置。
Delete(L,p) 從表L中刪除位置p處的元素。
IsEmpty(L) 如果表L為空表(長度為0)則返回true,否則返回false。
Clear(L)清除所有元素。
Init(L)同第一個,初始化線性表為空。
Traverse(L)遍歷輸出所有元素。
Find(L,x)查找並返回元素。
Update(L,x)修改元素。
Sort(L)對所有元素重新按給定的條件排序。
strstr(string1,string2)用於字元數組的求string1中出現string2的首地址。
參考資料來源:網路-線性表
❻ 線性表鏈式存儲結構的優點和缺點有什麼
一、線性表鏈式存儲結構的優點:
1、均勻性:雖然不同數據表的數據元素可以是各種各樣的,但對於同一線性表的各數據元素必定具有相同的數據類型和長度。對於線性鏈表,可以從頭指針開始,沿各結點的指針掃描到鏈表中的所有結點。
2、有序性:各數據元素在線性表中的位置只取決於它們的序號,數據元素之前的相對位置是線性的,即存在唯一的第一個和最後一個的數據元素,除了第一個和最後一個外,其它元素前面均只有一個數據元素(直接前驅)和後面均只有一個數據元素(直接後繼)。
二、線性表鏈式存儲結構的缺點:
線性表鏈式存儲結構不要求邏輯上相鄰的元素在物理位置上是相鄰,因此,它沒有順序存儲結構所具有的弱點,但也同時失去了順序表可隨機存取的優點。
(6)存儲的優缺點有哪些擴展閱讀:
線性表鏈式存儲結構的其他介紹:
一般在計算機的硬碟中,文件都是鏈式存儲的。我們知道,多個扇區組成一個簇,簇是計算機存儲數據的基本單位。
而一個文件是存儲在多個在空間上也許並不相連的簇中的,這就是鏈式存儲。但是為了能夠讀取出這個文件,計算機會在該文件第一部分的尾部寫上第二部分所在的簇號。
另一部分的尾部又寫上第三部分,以此類推,最後一部分寫上一段代碼,表示這是該文件的最後一部分。值得一提的是,高簇號在後。(如代碼所示的1234實為簇3412)文件所佔簇可認為是隨機分配的。
❼ 磁性儲存與光儲存哪個儲存更久 優缺點各是什麼
僅從理論上說,光儲存能夠儲存得更久!因為磁性存儲材料的磁性會隨著時間流逝而逐漸減弱.
磁性存儲:優點是存儲特別方便,能夠很容易的將磁信號轉化為電信號進行信息計算與傳輸.缺點是此種材料必須完全密封,不能有灰塵進入,還有就是不能永久存儲.
光儲存材料:優點是在理論上能夠永久存儲,缺點是這種存儲材料極易受摩擦等外部作用而損壞.
❽ 存儲過程有什麼優缺點為什麼要用存儲過程
存儲過程是一組予編譯的SQL語句
它的優點:1.允許模塊化程序設計,就是說只需要創建一次過程,以後在程序中就可以調用該過程任意次。
2.允許更快執行,如果某操作需要執行大量SQL語句或重復執行,存儲過程比SQL語句執行的要快。
3.減少網路流量,例如一個需要數百行的SQL代碼的操作有一條執行語句完成,不需要在網路中發送數百行代碼。
4.更好的安全機制,對於沒有許可權執行存儲過程的用戶,也可授權他們執行存儲過程。
❾ 雲存儲和傳統硬碟存儲有哪些優缺點
給個水一點的回答,考慮到刻錄機的老化和兼容性之類的問題,普通光碟的存儲時間應該不如硬碟,機械硬碟不如u盤和ssd,光碟當然是避光低溫保存最好。雲存儲的優點就是存儲方便分享也方便,共有部分的數據冗餘度低,缺點就是對網路依賴大,對政策依賴大,安全性值得擔憂。
採納哦
❿ 比較各個存儲類型的優缺點
【塊存儲】
典型設備:磁碟陣列,硬碟
塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬碟意義完全不同了。例如第一個邏輯硬碟A裡面,可能第一個200M是來自物理硬碟1,第二個200M是來自物理硬碟2,所以邏輯硬碟A是由多個物理硬碟邏輯虛構出來的硬碟。)
接著塊存儲會採用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統會識別到有5塊硬碟,但是操作系統是區分不出到底是邏輯還是物理的,它一概就認為只是5塊裸的物理硬碟而已,跟直接拿一塊物理硬碟掛載到操作系統沒有區別的,至少操作系統感知上沒有區別。
此種方式下,操作系統還需要對掛載的裸硬碟進行分區、格式化後,才能使用,與平常主機內置硬碟的方式完全無異。
優點:
1、 這種方式的好處當然是因為通過了Raid與LVM等手段,對數據提供了保護。
2、 另外也可以將多塊廉價的硬碟組合起來,成為一個大容量的邏輯盤對外提供服務,提高了容量。
3、 寫入數據的時候,由於是多塊磁碟組合出來的邏輯盤,所以幾塊磁碟可以並行寫入的,提升了讀寫效率。
4、 很多時候塊存儲採用SAN架構組網,傳輸速率以及封裝協議的原因,使得傳輸速度與讀寫速率得到提升。
缺點:
1、採用SAN架構組網時,需要額外為主機購買光纖通道卡,還要買光纖交換機,造價成本高。
2、主機之間的數據無法共享,在伺服器不做集群的情況下,塊存儲裸盤映射給主機,再格式化使用後,對於主機來說相當於本地盤,那麼主機A的本地盤根本不能給主機B去使用,無法共享數據。
3、不利於不同操作系統主機間的數據共享:另外一個原因是因為操作系統使用不同的文件系統,格式化完之後,不同文件系統間的數據是共享不了的。例如一台裝了WIN7/XP,文件系統是FAT32/NTFS,而Linux是EXT4,EXT4是無法識別NTFS的文件系統的。就像一隻NTFS格式的U盤,插進Linux的筆記本,根本無法識別出來。所以不利於文件共享。
【文件存儲】
典型設備:FTP、NFS伺服器
為了克服上述文件無法共享的問題,所以有了文件存儲。
文件存儲也有軟硬一體化的設備,但是其實普通拿一台伺服器/筆記本,只要裝上合適的操作系統與軟體,就可以架設FTP與NFS服務了,架上該類服務之後的伺服器,就是文件存儲的一種了。
主機A可以直接對文件存儲進行文件的上傳下載,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,因為文件管理功能已經由文件存儲自己搞定了。
優點:
1、造價交低:隨便一台機器就可以了,另外普通乙太網就可以,根本不需要專用的SAN網路,所以造價低。
2、方便文件共享:例如主機A(WIN7,NTFS文件系統),主機B(Linux,EXT4文件系統),想互拷一部電影,本來不行。加了個主機C(NFS伺服器),然後可以先A拷到C,再C拷到B就OK了。(例子比較膚淺,請見諒……)
缺點:
讀寫速率低,傳輸速率慢:乙太網,上傳下載速度較慢,另外所有讀寫都要1台伺服器裡面的硬碟來承擔,相比起磁碟陣列動不動就幾十上百塊硬碟同時讀寫,速率慢了許多。
【對象存儲】
典型設備:內置大容量硬碟的分布式伺服器
對象存儲最常用的方案,就是多台伺服器內置大容量硬碟,再裝上對象存儲軟體,然後再額外搞幾台服務作為管理節點,安裝上對象存儲管理軟體。管理節點可以管理其他伺服器對外提供讀寫訪問功能。
之所以出現了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發揚它倆各自的優點。簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫快,利 於共享的出來呢。於是就有了對象存儲。
首先,一個文件包含了了屬性(術語叫metadata,元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(以下簡稱數據)。
以往像FAT32這種文件系統,是直接將一份文件的數據與metadata一起存儲的,存儲過程先將文件按照文件系統的最小塊大小來打散(如4M的文件,假設文件系統要求一個塊4K,那麼就將文件打散成為1000個小塊),再寫進硬碟裡面,過程中沒有區分數據/metadata的。而每個塊最後會告知你下一個要讀取的塊的地址,然後一直這樣順序地按圖索驥,最後完成整份文件的所有塊的讀取。
這種情況下讀寫速率很慢,因為就算你有100個機械手臂在讀寫,但是由於你只有讀取到第一個塊,才能知道下一個塊在哪裡,其實相當於只能有1個機械手臂在實際工作。
而對象存儲則將元數據獨立了出來,控制節點叫元數據伺服器(伺服器+對象存儲管理軟體),裡面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾台分布式伺服器中的信息),而其他負責存儲數據的分布式伺服器叫做OSD,主要負責存儲文件的數據部分。當用戶訪問對象,會先訪問元數據伺服器,元數據伺服器只負責反饋對象存儲在哪些OSD,假設反饋文件A存儲在B、C、D三台OSD,那麼用戶就會再次直接訪問3台OSD伺服器去讀取數據。
這時候由於是3台OSD同時對外傳輸數據,所以傳輸的速度就加快了。當OSD伺服器數量越多,這種讀寫速度的提升就越大,通過此種方式,實現了讀寫快的目的。
另一方面,對象存儲軟體是有專門的文件系統的,所以OSD對外又相當於文件伺服器,那麼就不存在文件共享方面的困難了,也解決了文件共享方面的問題。
所以對象存儲的出現,很好地結合了塊存儲與文件存儲的優點。
最後為什麼對象存儲兼具塊存儲與文件存儲的好處,還要使用塊存儲或文件存儲呢?
1、有一類應用是需要存儲直接裸盤映射的,例如資料庫。因為資料庫需要存儲裸盤映射給自己後,再根據自己的資料庫文件系統來對裸盤進行格式化的,所以是不能夠採用其他已經被格式化為某種文件系統的存儲的。此類應用更適合使用塊存儲。
2、對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟體以及大容量硬碟。如果對數據量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。