SQL Server 2008 all version



Giới thiệu SQL Server 2008

Microsoft SQl server là một hệ quản trị cơ sở dữ liệu quan hệ (relational database management system – RDBMS) do Microsoft phát triển. SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ mạng máy tính hoạt động theo mô hình khách chủ cho phép đồng thời cùng lúc có nhiều người dùng truy xuất đến dữ liệu, quản lý việc truy nhập hợp lệ và các quyền hạn của từng người dùng trên mạng. Ngôn ngữ truy vấn quan trọng của Microsoft SQL server là Transact-SQL. Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International Organization for Standardization) và
ANSI (American National Standards Institute) được sử dụng trong SQL Server

SQL Server 2008 all version

Quay lại lịch sử, lúc đầu Microsoft đã quay sang kết hợp với công ty Sybase để cùng hợp tác làm ra một sản phẩm thuộc loại hệ quản trị cơ sở dữ liệu (Database Management System). Với sự hợp tác tốt đẹp, hai công ty này đã thành công cho ra đời một sản phẩm thuộc loại cơ sở dữ liệu có tên là Ashton-Tate vào năm 1989, sản phẩm này hoạt động trên môi trường OS/2. Sau đó một thời gian, Sybase đã phát triển sản phẩm này trên môi trường UNIX và đổi tên riêng là DataServer mà ngày nay còn có tên khác là Sybase Adaptive Server. Microsoft quyết định không phát triển hệ điều hành OS/2 mà thay vào đó cho ra đời một hệ điều hành mạng máy tính có tên là Windows NT Server. Và thế là SQL Serverchỉ hoạt động độc lập trên môi trường Windows NT Server mà thôi. Lần lượt các phiên bản của Microsoft SQL Server đã ra đời sau sự kiện này, từ 4.2 sau đó được nâng cấp thành 4.21, 6.0, 6.5, 7.0 và hiện giờ là Microsoft SQL Server 2000, 2005 và mới nhất là Microsoft SQL Server 2008.
II. Theo dòng lịch sử

SQL có nhiều phiên bản, ở đây tôi xin nhấn mạnh một số phiên bản nổi bật:

- SQL Server 2005: SQL Server 2005, được phát hành vào tháng 11 năm 2005, là phiên bản tiếp theo của SQL Server 2000. SQL Server 2005 tập trung vào khả năng xử lý giao dịch trực tuyến trên diện rộng OLTP ( large-scale online transactional processing), ứng dụng thương mại điện tử (e-commerce applications) và kho dữ liệu (data warehousing). Ngoài ra, những cải tiến quan trọng trong SQL Server 2005 là thêm các dịch vụ mới như: dịch vụ báo cáo Reporting Services, Service Broker và sự thay đổi đáng kể trong Database Engine.

- SQL Server 2008:Đây là phiên bản mới nhất của SQl Server, có tên mã là “katmai”. Ngày 27/02/2008 , Microsoft tổ chức một sự kiện có tên Heroes Happen Here nhằm giới thiệu sản phẩm mới SQL Server 2008 (cùng với những sản phẩm khác như Windows Server 2008; Visual Studio 2008). Bản SQL Server 2008 Release Candidate sẽ được trình làng trong quý II, trong khi đó, bản hoàn chỉnh sẽ mắt trong quý III (2008).

III. Microsoft SQL Server 2008 – người bạn đường tin cậy:

Để xứng đáng là một người bạn đường tin cậy, Microsoft SQL server 2008 có những điểm mới, tiến bộ sau:

Một trong điểm nổi bật khi xem xét về SQL Server 2008 của Microsoft là tính năng phân loại biệt ngữ mới và các lợi ích vào trong nhóm hoặc các vùng chính. Có bốn vùng chính đó là Enterprise Data Platform, Dynamic Development, Beyond Relational Database, và Pervasive Insight.

SQL Server 2008 có tác dụng đòn bẩy cho công nghệ .NET 3.0 (Dot Net Framework 3.0) với LINQ (Language Integrated Query – ngôn ngữ truy vấn tích hợp). Thêm vào đó là sự hỗ trợ hiệu quả hơn cho các thực thể dữ liệu doanh nghiệp cùng với các tùy chọn đồng bộ dữ liệu.

Tóm lại: SQL Server 2008 có nhiều cải thiện hữu dụng và thiết thực. Có liệt kể một cách sơ lược như sau:

- Mã hóa dữ liệu: trong suốt cho phép toàn bộ cơ sở dữ liệu, các bảng và dữ liệu có thể được mã hóa mà không cần phải lập trình ứng dụng. Trong SQL Server 2008, toàn bộ cơ sở dữ liệu đều có thể được mã hóa bằng SQL Engine. Phương pháp này mã hóa tất cả dữ liệu và các file bản ghi cho cơ sở dữ liệu. Bằng sử dụng phương pháp này, tất cả các chỉ mục và bảng cũng được mã hóa.

Tính năng mã hóa tiếp theo là Backup Encryption. SQL Server 2008 có một phương pháp mã hóa các backup dùng để tránh lộ và can thiệp của người khác vào dữ liệu. Thêm vào đó, việc phục hồi backup có thể được hạn chế với từng người dùng cụ thể.

Cuối cùng, có một số tùy chọn mới cho External Key Management. Nếu bạn có dính dáng tới việc xử lý thẻ tín dụng hoặc PCI (thẻ trả trước), thì SQL Server 2008 sẽ hỗ trợ Hardware Security Modules (HSM) – mô đun bảo mật phần cứng. Các mô đun này là giải pháp phần cứng của nhóm thứ ba được sử dụng để lưu các Key ở một địa điểm phân biệt với dữ liệu mà chúng bảo vệ.

- Backup có thể được mã hóa để ngăn chặn việc lộ và thay đổi dữ liệu. Sự thay đổi và truy cập dữ liệu có thể được thẩm định Thêm vào việc thẩm định chuẩn cho logon / logoff và các thay đổi được phép, SQL Server 2008 cho phép kiểm tra sự thay đổi hay truy cập dữ liệu.

- Fact Tables có thể được nén với hiệu suất cao.. SQL Server Data Compression đã thực sự thực hiện được mục tiêu chính là giảm kích thước của Fact Table. Vì vậy liên quan với việc lưu trữ trên các ổ đĩa cứng, với các file vật lý nhỏ hơn, số lần backup được giảm

- Tài nguyên chủ có thể được bảo đảm an toàn. Quản lý tài nguyên - Resource Governor - trong SQL Server 2008 cũng là một điểm mới. Governor được sử dụng để hạn chế người dùng hoặc nhóm người dùng chi phối các lớp tài nguyên mức cao. Điểm mới trong SQL Server 2008 phải kể đến nữa là Performance Studio. Studio là một trong các công cụ hiệu suất. Cùng với đó chúng có thể được sử dụng cho việc kiểm tra, xử lý sự cố, điều chỉnh và báo cáo. Thành phần Data Collector của Studio có thể cấu hình. Nó hỗ trợ một số phương pháp chọn gồm có các truy vấn TSQL, SQL Trace, và Perfmon Counters. Dữ liệu cũng có thể được chọn bằng lập trình. Khi dữ liệu được chọn, có các tùy chọn báo cáo chung.

- SQL 2008 hỗ trợ Hot Plug CPU. trong SQL Server 2008, các CPU cắm thêm có thể được bổ sung vào nếu phần cứng của hệ thống hỗ trợ nó

- Bộ đếm hiệu suất được mở rộng. Số bộ đếm hiệu suất trong SQL Server 2008 đã được mở rộng hơn so với phiên bản trước đó. IO và các bộ đếm hiệu suất bộ nhớ là một cặp có thể được chọn để kiểm tra hiệu suất. Dữ liệu đã được chọn bằng bộ đếm sẽ được lưu trong trung tâm lưu dữ liệu tập trung. Microsoft phát biểu rằng việc chạy thiết lập hiệu suất mặc định liên quan đến các kiểm tra sẽ tốn ít hơn 5% tài nguyên bộ nhớ và CPU.Có một công cụ Performance Dashboard có thể đọc dữ liệu hiệu suất đã được lưu.

- Việc cài đặt đã được đơn giản hóa. Bộ đặt SQL Server 2008 cũng có nhiều nâng cao. Dữ liệu cấu hình và các bit “engine” được tách biệt vì vậy nó có thể tạo một đĩa hệ thống không cấu hình cơ bản phân phối đến một số máy chủ dễ dàng hơn. Cài đặt có thể cập nhật được các nâng cấp mới nhất từ website Microsoft. Tính năng khác là khả năng cài đặt SQL Server, gói dịch vụ và các bản vá. Đi cùng với tính năng này là khả năng gỡ bỏ cài đặt các gói dịch vụ một cách dễ dàng.


- Microsoft SQL Server 2008 Enterprise (x86, x64, ia64):


Bản x86: 929.9 MB : Link 1
Bản x64: 1,35GB    : Link 1
Bản x86 and x64 : Click Here

- Microsoft SQL Server 2008 Standard (x86, x64):
Bản x86 and x64 : Click here
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9 | Part 10 | Part 11| Part 12

- Microsoft SQL Server 2008 Web (x86, x64): 


SQL Server 2008 Web (64-bit) x64 : Click Here
SQL Server Web (32-bit) : Click Here

- Microsoft SQL Server 2008 Workgroup (x86, x64):



Phần 1
Phần 2
Phần 3
Phần 4
Phần 5
Phần 6
Phần 7
Phần 8
Phần 9
Phần 10
Phần 11
Phần 12
Phần 13
Phần 14
Phần 15
Phần 16


- Microsoft SQL Server 2008 Developer (x86, x64, ia64):
Click Here Pass: vieclamsinhvien.com.vn


- Microsoft SQL Server 2008 Books Online: Hướng dẫn cài đặt, nâng cấp, thông tin về chức năng mới... Tương thích Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Vista Service Pack 1; Windows XP Service Pack 3 và yêu cầu .NET framework (x86, x64, ia64), tải về tại đây hoặc liên kết trực tuyến.



Download Full mọi verserion: Click Here
CD Key:
Developer S/N: PTTFM-X467G-P7RH2-3Q6CG-4DMYB
Enterprise S/N: JD8Y6-HQG69-P9H84-XDTPG-34MBB
Standard S/N: FXHQY-JQF42-68VVV-PYVVR-RY3BB
[Read More...]


Phân đoạn bảng trong SQL Server



Kỹ thuật phân chia bảng thành từng đoạn (Table partitioning) nhằm quản lý hiệu quả cơ sở dữ liệu với dung lượng lớn.

Phân đoạn bảng trong SQL Server

Đây là tính năng mới được đưa vào SQL Server 2005 và tiếp tục được tăng cường ở phiên bản 2008. Đối với các ứng dụng truy cập từ bên ngoài, bảng (table) vẫn là một bảng duy nhất, chỉ có cấu trúc vật lý của nó là khác so với các bảng không phân đoạn.
Bảng được phân đoạn dựa vào giá trị một trường của nó (trường được chọn gọi là partition key). Ví dụ bạn có dữ liệu về các giao dịch bán hàng chứa trong bảng BanHang, bạn có thể phân đoạn theo năm của trường NgayGiaoDich (ngày giao dịch): các giao dịch xảy ra trong năm 2009 được nằm trong một đoạn riêng, tương tự với các giao dịch của năm 2010… Kỹ thuật này làm tăng khả năng mở rộng của SQL Server lên rất nhiều và giúp cho việc quản trị các cơ sở dữ liệu lớn trở nên dễ dàng hơn. Thử hình dung với một bảng dữ liệu chứa vài trăm triệu bản ghi thường xuyên được cập nhật, các tác vụ như backup/restore, hoặc create/rebuild index đều rất tốn kém thời gian. Việc truy vấn hoặc sửa đổi dữ liệu cũng rất vất vả. Table partitioning nhằm giải quyết các trở ngại đó, nó có các ưu điểm chính sau:

1. Tiện lợi về quản trị:


- Bạn có thể backup/restore một đoạn mà không ảnh hưởng đến các đoạn còn lại. Ví dụ, tại thời điểm năm 2010 các đoạn chứa dữ liệu của 2009 và các năm trước không còn tiếp nhận dữ liệu mới nữa, bạn không cần phải thường xuyên backup các đoạn này và chỉ cần backup đoạn 2010.
- Bạn cũng có thể REBUILD lại index trên từng đoạn (những đoạn cần phải REBUILD do có nhiều thao tác xóa, sửa) thay vì trên toàn bộ bảng.
- Nó cũng cho phép nhanh chóng loại bỏ dữ liệu nguyên một đoạn ra khỏi bảng thay vì phải dùng lệnh DELETE (thao tác này gọi là SWITCH-OUT). Tương tự nó cũng cho phép “nạp” dữ liệu từ một bảng khác vào thành một đoạn mới (SWITCH-IN). Tính năng này rất có giá trị đối với các ứng dụng ETL (Extract, Transform & Load) và Datawarehouse.


Ví dụ bạn cần import dữ liệu của năm 2008, bạn có thể import vào một bảng riêng và sau đó switch-in tức thì bảng này vào bảng chính. Trước khi có partitioning, bạn phải dùng lệnh INSERT để chuyển dữ liệu từ bảng riêng vào bảng chính. Quá trình này mất nhiều thời gian hơn và trong suốt quá trình đó bảng bị khóa và không thể truy cập được.

2. Cải tiến về hiệu năng:


- Khi một câu lệnh chỉ cần lấy dữ liệu ở một đoạn nào đó thì hệ thống chỉ cần truy nhập vào đoạn đó và bỏ qua các đoạn còn lại (tính năng này gọi là partition elimination)


- Khi các đoạn dữ liệu được lưu trữ ở các ổ cứng khác nhau sẽ làm giảm tranh chấp vào/ra giữa các câu lệnh. Ví dụ hai câu lệnh SELECT UPDATE hoạt động trên cùng một bảng nhưng ở hai đoạn khác nhau có thể thực hiện hoàn toàn song song với nhau.

Việc phân đoạn bảng dựa trên hai khái niệm mới sau đây:

- Partition function: Qui định giá trị biên cho các đoạn. Hệ thống dựa vào hàm này để xác định đoạn mà mỗi bản ghi thuộc vào.
- Partition scheme: Ánh xạ các đoạn khai báo trong partition function vào các filegroup (mỗi đoạn được lưu trữ tại một filegroup).
Dưới đây tôi sẽ đi qua từng bước thiết lập việc phân đoạn thông qua một ví dụ cụ thể.


Bạn có bảng BanHang gồm các cột BangHang_ID, NgayGiaoDich, MaSP, SoLuong, ThanhTien. Bạn muốn phân đoạn bảng theo từng năm của NgayGiaoDich: Để cho đơn giản, giả sử bạn muốn lưu các giao dịch của năm 2009 trở về trước vào một đoạn, trong năm 2010 vào một đoạn, và từ 2011 trở lên vào một đoạn (về sau bạn vẫn luôn luôn có thể sửa đổi để dành riêng một đoạn cho 2011 và bổ sung các đoạn mới cho 2012, 2013…). Như vậy với cấu hình ở trên, bảng sẽ có 3 đoạn: 2009 trở về trước, 2010, và 2011 trở về sau. Do đó bạn cũng cần 3 filegroup.

Bước 1: Tạo database và filegroup


CREATE DATABASE PartTest
GO
USE PartTest
GO

-- tạo filegroup
ALTER DATABASE PartTest ADD FILEGROUP FG2009AndBefore
ALTER DATABASE PartTest ADD FILEGROUP FG2010
ALTER DATABASE PartTest ADD FILEGROUP FG2011AndAfter

-- thêm data file vào mỗi filegroup
ALTER DATABASE PartTest ADD FILE (NAME = N'FY2009AndBefore', FILENAME = N'D:\DATA\PartTest\FY2009AndBefore.ndf') TO FILEGROUP FG2009AndBefore
ALTER DATABASE PartTest ADD FILE (NAME = N'FY2010', FILENAME = N'D:\DATA\PartTest\FY2010.ndf') TO FILEGROUP FG2010
ALTER DATABASE PartTest ADD FILE (NAME = N'FY2011AndAfter', FILENAME = N'D:\DATA\PartTest\FY201AndAfter.ndf') TO FILEGROUP FG2011AndAfter
Bước 2: Tạo partition function và partition scheme
USE PartTest
GO
CREATE PARTITION FUNCTION PFunc_NGD(DATETIME) AS RANGE RIGHT FOR VALUES ('2010-01-01', '2011-01-01')
GO
CREATE PARTITION SCHEME PScheme_NGD AS PARTITION PFunc_NGD TO (FG2009AndBefore, FG2010, FG2011AndAfter)



Hàm partition function có tên PFunc_NGD định nghĩa giá trị biên cho các đoạn, là ngày đầu tiên của năm 2010 và ngày đầu tiên của 2011. Giống như khi bạn cắt một sợi dây, chỉ cần 2 nhát cắt để chia sợi dây làm 3 đoạn, ở đây cũng chỉ có 2 giá trị biên. Do vậy dải giá trị của các đoạn sẽ như sau:

Đoạn 1: Từ trước đến 2009-12-31 23:59:59
Đoạn 2: 2010-01-01 00:00:00 đến 2010-12-31 23:59:59
Đoạn 3: 2011-01-01 00:00:00 về sau


Sau đó partition scheme PScheme_NGD dùng hàm PFunc_NGD để “gắn” các đoạn vào từng filegroup. Như vậy đoạn 1 sẽ đến FG2009AndBefore, đoạn 2 đến FG2010 và đoạn 3 đến FG2011AndAfter.
Lưu ý, partition function không giống với các user-defined function. Trong Management Studio, bạn thấy partition functionpartition scheme ở mục Database/Storage.


Một lưu ý nữa là một partition function có thể được dùng cho nhiều partition scheme, cả hai là các đối tượng chung trong database chứ không gắn liền với một bảng cụ thể. Khi định nghĩa bảng (xem bước 4) bạn cần chỉ định dùng partition scheme nào.

Bước 4: Tạo bảng dùng partition scheme
USE PartTest
GO
CREATE TABLE dbo.BanHang(
BangHang_ID INT IDENTITY,
NgayGiaoDich DATETIME,
MaSP INT,
SoLuong INT,
ThanhTien INT
) ON PScheme_NGD(NgayGiaoDich)
GO
CREATE CLUSTERED INDEX CI_BanHang_NGD ON dbo.BanHang(NgayGiaoDich) ON PScheme_NGD(NgayGiaoDich)



Mệnh đề “ON PScheme_NGD(NgayGiaoDich)” trong hai lệnh tạo bảng và tạo index ở trên chỉ định bảng BanHang index CI_BanHang_NGD được tạo trên partition scheme PScheme_NGD, có nghĩa là để cho nó quản lý việc phân bổ dữ liệu. Vậy là bảng BanHang đã được phân đoạn. Bạn có thể kiểm tra xem dữ liệu được ghi vào đoạn nào:


SELECT $PARTITION.PFunc_NGD('2008-07-24')
SELECT $PARTITION.PFunc_NGD('2009-12-31')
SELECT $PARTITION.PFunc_NGD('2010-01-01')
SELECT $PARTITION.PFunc_NGD('2010-11-25')
SELECT $PARTITION.PFunc_NGD('2011-03-16')


Theo PCWorld VN
[Read More...]


Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)



Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)

I. Giới thiệu tổng quan về Index trong các hệ quản trị cơ sở dữ liệu

1. Cấu trúc lưu trữ của bản ghi (Record)

Tất cả các bản ghi (record) của một bảng dữ liệu được tổ chức trong một file. File dữ liệu được quản lý bởi hệ quản trị cơ sở dữ liệu chứ không phải bởi hệ điều hành. Việc lưu trữ đảm bảo tính an toàn dữ liệu, tránh các trường hợp lỗi của phần cứng hay phần mềm trên hệ thống làm ảnh hưởng tới dữ liệu. Mỗi khi có một yêu cầu truy vấn dữ liệu thì hệ quản trị cơ sở dữ liệu (DBMS) sẽ xác định và trả về những dòng của các bảng quan hệ đáp ứng được câu truy vấn của người dùng. Cách thức xử lý yêu cầu phụ thuộc vào cách tổ chức lưu trữ các record trong các file này. Nếu những record được tổ chức thành những phần nhỏ và được sắp xếp theo thứ tự thì nó gần giống như một heap. Còn nếu những record được sắp xếp theo thứ tự của một vài thuộc tính thì sau đó cấu trúc file này được gọi là “đã sắp xếp”.
Để truy xuất tới những dòng dữ liệu trong một file mà được tổ chức theo heap thì đa số các hệ quản trị có thể dùng một phương pháp là scan qua tất cả các “trang đĩa” nơi mà những record được lưu trữ. Mặt khác khi tất cả các record đã được sắp xếp trong file thì có thể sử dụng phương pháp tìm nhị phân trên những trang của đĩa nới chứa các record để lấy ra các bản ghi sao cho phù hợp với yêu cầu của người dùng. Và cách tổ chức này cũng được dùng để duy trì trật tự được sắp xếp trong file bằng cách tìm chổ để thêm vào.
Ví dụ: có một danh sách học sinh được lưu trong một bảng, nó sẽ được lưu thành một file và giả sử file này sắp xếp theo thứ tự (last name - tên). Khi truy vấn dựa vào tên thì hệ thống sẽ dùng phương pháp duyệt nhị phân để đưa ra các dữ liệu phù hợp. Nếu chúng ta duyệt theo yêu cầu là ngày tháng năm sinh thì hệ thống phải duyệt qua hết các dòng trong bảng (các trang đĩa, nơi chứa các record) để đưa về kết quả cho câu truy vấn. Cách làm này không được linh hoạt cho nên khái niệm Index trong database ra đời để giải quyết hạn chế này.

2. Khái niệm Index

Index là một đối tượng trong hệ quản trị cơ sở dữ liệu – là một cấu trúc dữ liệu được sử dụng nhằm tăng tốc độ tìm kiếm trong một table, nó giống như ‘chỉ mục’ trong thư viện giúp cho người đọc tìm kiếm sách mình cần một cách nhanh chóng và hiệu quả hay phần mục lục của mỗi cuốn sách giúp ta đến chổ cần đọc nhanh hơn.
Ví dụ:
Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)

 3. Tổng quan về Index.

Cấu trúc của một chỉ mục bao gồm ít nhất hai phần là khóa tìm kiếm và con trỏ trỏ tới mẫu tin tương ứng trong bảng dữ liệu.
Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)


Index cung cấp cho chúng ta cả 2 phương pháp truy cập ngẫu nhiên và tuần tự trên trường dữ liệu đã được sắp xếp. Index có thể được tạo ra bằng cách sử dụng một hay nhiều trường (field) trong một bảng (table). Về mặt không gian lưu trữ thì một index có kích thước nhỏ hơn nhiều so với một bảng dữ liệu, nó mở ra khả năng lưu trữ index trong bộ nhớ thay cho một bảng dữ liệu khi mà dữ liệu trong nó quá lớn.

4. Cấu trúc Index cơ bản được áp dụng trong một số hệ quản trị cơ sở dữ liệu hiện tại.
Cấu trúc của Index có thể được chia làm 2 loại: clustered và non-clustered.

a. Non-Clustered Index

Một non-clustered index là một index mà trong đó thứ tự logic của khoá không giống như thứ tự vật lý của các dòng trong bảng.
Một index kiểu non-clustered thông thường nó sẽ chứa một giá trị tham chiếu tới một khối (block) dữ liệu, khối dữ liệu này nó chứa những dòng dữ liệu (cụ thể) cho những phần tử của chỉ mục được khởi tạo. ứng với mỗi việc tìm kiếm chỉ mục trên chỉ mục dạng này một khối dữ liệu mà nó chứa dòng cần tìm kiếm thì cũng phải “lấy ra”.

b. Clusterde Index

Là một index mà trong đó thứ tự logic của các khoá cũng tương tự như thứ tự vật lý của các dòng trong bảng. (thường khi ta tạo một khoá chính thì một clustered index sẽ được tạo trên cột đó).
Mỗi khi gom dữ liệu thì nó sẽ sắp xếp lại bên trong khối dữ liệu gần giống như thứ tự của index. Bởi vậy những phép toán trên các khối dữ liệu này cũng tốt gần như là thực hiện trên index. Nói một cách chính xác những phép toán trong một hệ thống cơ sở dữ liệu (database system) là khác nhau nhưng vì những dòng dữ liệu chỉ có thể lưu ở các mức vật lý và trong một bảng dữ liệu chỉ có duy nhất một clustered index được tạo ra nên nó có thể làm tăng tốc độ truy xuất. Tuy nhiên chỉ những nơi mà dữ liệu thường xuyên chúng được sắp xếp giống hay ngược lại thứ tự của clustered index hoặc khi môt dãy các phần tử được chọn.

c. Sự khác biệt giữa clustered và non-clustered

Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)


II - Khái quát về cấu trúc BTree Index.

1. Cấu trúc B+ Tree

Trong thực tế có nhiều chỉ mục kích thước của nó là rất lớn (thực tế một table có khoảng hơn một triệu dòng là điều bình thường) nên cần phải được lưu trên các thiết bị phần cứng (thiết bị nhập xuất - HDD). Ngày nay khi mà dung lượng của các thiết bị lưu trữ tăng lên rất nhanh và giá thành rẻ nên cần 1 phương pháp truy xất nhanh trên một lượng dữ liệu lớn như vậy.
B+ Tree là một cấu trúc dữ liệu dạng cây ‘đa phân cân bằng’. Cấu trúc một node của nó thường được chia làm nhiều phần. Cây được tổ chức với một qui tắc nhất định được tạo ra từ đầu. Thường thì giá trị của các node tăng dần từ trái qua phải, node con bên trái sẽ chứa giá trị nhỏ hơn node con bên phải...

Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)


B + Tree là một sự tổng quát hóa của cây nhị phân tìm kiếm (BST). Sự khác biệt chính giữa chúng là số lượng node con của B+Tree nó sẽ nhiều hơn chứ không bị giới hạn bởi hai phần tử như của cây nhị phân tìm kiếm. Mục tiêu ở đây là làm sao để giảm tối đa số lần truy xuất các thiết bị ngoại vi (ở đây là đĩa). Tại bất cứ thời điểm nào chúng ta sẽ thử định vị những bản ghi, chúng ta muốn độ cao của cây đa phân này phải là nhỏ nhất để giảm chi phí tìm kiếm, để đạt được mục tiêu này thì số lượng nhánh trong cây phải lớn.
Nếu B+Tree có bậc là m thì môt node của nó sẽ có tối đa m nhánh con và có m-1 khóa để tìm kiếm.
• Các record chỉ được lưu ở nút lá của cây
• Tất cả các nút (ngoại trừ nút gốc) có tối thiểu là m/2 và tối đa là m cây(nhánh) con.
• Nút gốc và lá phái ít nhất có 2 con.
• Bên trong một node lưu giá trị tìm kiếm, một vài khóa được sử dụng như những “người chỉ đường” cho quá trình tìm kiếm. Những khóa này cần phải được sắp xếp theo môt thứ tự thống nhất trừ trước (thường thì tăng dần từ trái qua phải).
• Tùy thuộc vào kích thước của một record so với kích thước của một khóa thì node lá của B+Tree bậc m có thể lưu nhiều hơn hoặc ít hơn m records. Thông thường kích thước của một node là bội số của một khối dữ liệu trong ổ đĩa (bên windows mặc định là 512byte).
• Các node lá của cây thường được liên kết với nhau để tạo thành một danh sách liên kết, điều này nhằm mục tiêu là để không phải duyệt trở lại node gốc trong quá trình duyệt tìm kiếm.
Ví dụ một cây B+Tree:

Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)

2. Các hoạt động bên trong.

a. Tìm kiếm 

Để truy xuất những dòng dữ liệu khi câu truy vấn của người dùng đã đưa đầy đủ những thông tin đầu vào mô tả các record mà họ muốn lấy về. Việc tìm kiếm trong B+ Tree là một quá trình đệ qui và bắt đầu với nút gốc với khóa tìm kiếm là k. Quá trình tìm kiếm duyệt qua các bước.
• Thực hiện phương pháp tìm kiếm nhị phân ở trên node hiện tại, tìm kiếm với giá trị của khóa cần tìm kiếm trong một node đã được sắp xếp trước và bắt đầu với node gốc (ki < k < k(i+1))
• Nếu nút hiện tại không phải là nút lá thì đi xuống nhánh con có quan hệ với khóa ki và load node này lên để tiếp tục tìm kiếm, lặp lại quá trình này tới khi đi tới nút lá.
• nếu node là lá thì:
       o Nếu ki == k thì có có thể kết luận là record này tồn tại trong bảng dữ liệu chúng ta truy xuất vào vị trí của record đó dựa vào khóa k và đọc lên trả về cho người dùng.
       o Nếu ki != k thì có thể kết luận là record này không có.

b. Thêm

Quá trình thêm cũng tương tự như quá trình thêm vào các cây khác (giống như các loại cây nhị phân tìm kiếm), một dòng dữ liệu mới luôn luôn thêm vào node lá, sự phức tạp bắt đầu có khi một node lá bắt đầu «tràn» và làm thay đổi chỉ số chiều cao của các node liên quan.
Các bước để thêm mới một record là:
• Thêm mới một record và có khóa của nó (khóa k)
• Thực hiện tìm kiếm với khóa k trên cây, nếu khóa chưa tồn tại thì nó sẽ được thêm mới vào. Còn nếu đã tồn tại thì thông báo là dòng dữ liệu này đã có và báo trùng.
• Gọi nút lá L là nút lá nơi mà khóa k có thể được thêm vào.
• Nếu L chưa đầy thì chỉ việc thêm phần tử chỉ mục này vào. Nó bao gồm cả giá trị tìm kiếm (k) và địa chỉ trỏ tới nơi mà dữ liệu mới được thêm vào.
• Nếu L là đầy thì Lnew gọi là node lá anh em bên phải của nó, những khóa của L cùng với những phần tử của nó và kết hợp với các giá trị của Lnew sau đó phân phối lại các giá trị của chúng. Đây còn được gọi là quá trình split một node lá.

c. Xóa 

Khi xóa một phần tử trong cây thì phải chú ý đến tính đầy đủ của một node (số phần tử trong một node phải tối thiểu có m/2-1 phần tử khóa). Sự phức tạp có khi mà chúng ta xóa đi một khóa trong một node mà nó chỉ còn số phần tử tối thiểu (m/2-1 phần tử).
Quá trình xóa đi qua các bước:
• Tìm tới khóa cần xóa chứa trong node lá L.
• Từ chỉ mục chúng ta sẽ có được vị trí của dòng cần xóa trong file, vào đó và xóa nó đi.
• Nếu L có nhiều hơn m/2-1 phần tử thì ta xóa đi khóa của record đã xóa trên cây Index đi.
• Nếu L có đúng m/2-1 phần tử thì kiếm trong node là anh em bên phải của nó xem có nhiều hơn m/2-1 phần tử không ?
     o Nếu có chúng ta sẽ mượn anh em của node L một phần tử để đảm bảo tính chất tối thiểu trong một node.
     o Nếu không nó sẽ gộp hai node này lại với nhau và cân bằng lại cây chỉ mục.

3. Lợi ích của BTree Index:

BTree Index được dùng để giúp truy vấn các câu truy vấn dạng Insert, Update, Delete. Nó áp dụng được cho những yêu cầu từ một table cho những trường có tính chất đặc biệt. Ví như chúng ta có thể lấy ra những sinh viên có số điểm tích lũy trung bình trong khoảng từ 8.0 tới 9.5 trong bảng sinh viên.
Trong BTree Index thì mỗi khóa tương ứng với một dòng của dữ liệu thực. Nó sẽ được chọn khi độ trùng lắp dữ liệu là số ít.
Chỉ mục BTree sẽ được tạo nếu chúng ta tạo một bảng và chỉ định khóa chính cho nó, thì khóa chính chính là một chỉ mục kiểu B+Tree. Hoặc khi chúng ta tạo khóa ngoại thì mặc định cái trường khóa ngoại đó cũng được sử dụng BTree Index.

III - BitmapIndex

1. Giới thiệu

Trong một hệ quản trị cơ sở dữ liệu, các chỉ mục được tạo ra nhằm để xác định một cách nhanh chóng các dòng dữ liệu cần truy vấn nó nằm ở vị trí nào trên file, Bitmap Index cũng không ngoại lệ tuy nhiên các chiến lược để đánh chỉ mục Bitmap nó rất khác với các chiến lược đánh chỉ mục B+Tree.
Đây là một index nó sử dụng một cấu trúc dữ liệu đặc biệt là Bitmap. Nó được dùng để làm việc với những trường có dữ liệu rời rạc, với số lượng ít các giá trị khác nhau (tức mức độ lặp lại ở trong trường này thường là lớn), nhưng tần suất truy vấn đến trường này là rất cao. Ví dụ như trường giới tính (Gender), trường này chỉ bao gồm hai giá trị là Nam hoặc Nữ. Hình ảnh Bitmap Index cho ví dụ trên như sau:

Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)

Ở cột Indentifier đề cập tới môt số, số này là một số duy nhất dùng để nhận biết các hàng khác nhau. Giới tính là dữ liệu sẽ đánh chỉ mục nội dung của Bitmap được hiển thị như là 2 cột của Bitmap.
Phần Bitmap để tối ưu khả năng lưu trữ người ta thường dùng phương pháp nén dữ liệu, đa số là dùng các thuật toán nén tốt trên các trường dữ liệu có độ trùng lắp thông tin lớn như là RLE (Run length Encoding).

2. Cấu trúc 

Một Bitmap Index cũng được tổ chức như là B-Tree Index, nhưng phần lá của mỗi node lưu một dãy các bit cho mỗi khoá thay vì danh sách các ROWID (mã phân biệt của từng dòng). Mỗi bit trong danh sách Bitmap đó tương ứng với một ROWID, và nếu giá trị bit đó được khởi tạo, điều đó có nghĩa là hàng có ROWID tương ứng sẽ chứa giá trị khoá

Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)

3. Sử dụng Bitmap Index

Bitmap Index được sử dụng khi:
a. Mức độ dữ liệu trùng lắp không lớn.
Ví dụ trong Oracle thì quyết định là: distinct val/ total val < 1% thì dùng Bitmap Index : Tức nếu số giá trị rời rạc của một cột trong bảng trên tổng số dòng của bảng mà nhỏ hơn 1% thì ta dùng Bitmap Index.Ví dụ trường giới tính: distinct val = 2 <số giá trị riêng biệt> và Total val = 1000 dòng. 2/1000 < 10% --> dùng Bitmap.
Hoặc nếu trong một cột mà có mức độ lặp lại của một giá trị nào đó hơn 100 lần thì ta dùng Bitmap Index.

b. Không hoặc là ít thao tác update hoặc insert lên bảng dữ liệu.
Vì cách tổ chức của Bitmap khá phức tạp nên việc update lại thông tin của Bitmap Index phải trả một chi phí lớn cho việc duy trì cấu trúc của nó. Nó chiếm nhiều thời gian, không gian ổ cứng và thiết bị nhập xuất. Người thiết kế phải đảm bảo rằng không để vượt quá phạm vi kích thước của chỉ mục.
Việc sử dụng các phương pháp để hạn chế chi phí trên các chỉ mục không bị gián đoạn khi các thao tác insert, delete, update của index nó không bị giới hạn tài nguyên.

c. Khi mà có nhiều cột.
Một trong những lợi thế lớn nhất của Bitmap Index là có thể có nhiều cột trong đó nên nó có thể kết hợp các cột dữ liệu lại với nhau.
Trong trường hợp có một bảng có thể có nhiều hơn một cột có khả năng làm index để cải thiện tốc độ quét (scan) bảng dữ liệu.

5. So sảnh Bitmap Index và Btree Index.

Tìm hiểu về chỉ mục (Index) trong hệ quản trị cơ sở dữ liệu (DBMS)


IV. Kết luận

Index là môt đối tượng trong cơ sở dữ liệu nó được đưa ra để làm tăng tốc độ truy vấn dữ liệu trong các hệ quản trị cơ sở dữ liệu lớn hiện nay (như Oracle, Ms. SQL server, MySql, DB2…).
Index gồm có nhiều loại nhưng chủ yếu phổ biến nhất là 2 loại BTree Index, Bitmap Index.

1. Ứng dụng
Như đã nói ở trên index được đưa ra để tăng tốc độ truy vấn dữ liệu, khi mà lượng dữ liệu trong một table là nhiều. Nhờ vào index mà khi chúng ta cần truy cập nhanh dựa trên một hay nhiều khóa nào đó nó sẽ không phải tốn chi phí scan dữ liệu, đây là chi phí rất lớn để lấy dữ liệu lên đúng với yêu cầu của người dùng.
Lưu ý rằng khi chọn một loại index để cài đặt cho một cơ sở dữ liệu thì chúng ta cần phải cân nhắc dùng cái nào. Nếu mà dùng sai nó sẽ gây tới sự phản tác dụng. Bởi vì nếu cần dùng BTree Index mà dùng Bitmap Index thì sẽ tốn không gian lưu trữ trong khi đó cũng không đáp ứng được nhu cầu truy xuất nhanh vì phải duyệt qua bảng Bitmap.

2. Hạn Chế
- Vì khi dữ liệu thêm mới cần phải cập nhật và duy trì tính chất của từng loại index nên nó làm chậm quá trình thêm mới và update dữ liệu.
- Tốn không gian lưu trữ vì phải lưu trữ thêm nó trong bộ nhớ.
- Khi cập nhật dữ liệu cần phải tốn chi phí cập nhật lại chỉ mục để truy xuất.

V. Tài liệu tham khảo

http://en.wikipedia.org/wiki/Index_(database)
http://mattfleming.com/node/192
http://www.dbasupport.com/forums/showthread.php?t=38893



[Read More...]


Video Dậy SQL Server 2000 + 2005



Video Dậy SQL Server 2000 + 2005

Không phải nói nhiều về những video này. Những video này mình đã học qua và thấy nó thật sự rất rất tuyệt vời các bạn ạ. Từ cái không biết trở thành cái biết và thông thuộc đến kỳ lạ.
Giọng giảng trong video truyền cảm và súc tích cách hướng đẫn và bài tập phù hợp giúp các bạn có thể nhanh chóng thuộc làu và phân tích cơ sở dữ liệu một cách hiệu quả và ổn định nhất.
Ở dây mình giới thiệu 2 bộ :
  • 1 là Video dậy SQL Tiếng Việt do ĐH Khoa Học Tự Nhiên cung cấp 
  • 2 là Video dậy SQL Tiếng Anh
Cả 2 bộ này đều có những giá trị khác nhau về mặt kiến thức nhưng hoàn toàn cho bạn đc những kiến thức thực sự tuyệt vời.

Video Hệ Quản Trị Cơ Sở Dữ Liệu SQL Sever - ĐHTN
Download Video SQL 2000
Pass : softprovn.net

Video Học SQL 2005 (VTC - SQL Server 2005 Admin)
Download Video SQL 2005

[Read More...]


 

Categories

Audio (31) C/C++ (2) C# (5) Clip (29) CSS (1) Ebooks (109) Game (4) Graphics (1) Hacking (6) HD (2) Java (3) Linux (1) NetWork (28) OpenSource (7) Operating System (2) Other (34) Phim Bộ (2) Phim Lẻ (28) PHP (4) SEO (2) Software (52) SQL (4) Tâm Lý (2) Truyện Tranh (1) Windowns (5)

CPX24

Return to top of page Copyright © 2014 | Theme Download Converted into Blogger Template by Download Blog