SolidDB cho MySQL Solid Information Technology
lượt xem 5
download
www.soliddb.com/www.solidtech.com) ra đời và hoạt động từ vài năm nay. Tuy không quá nổi bật nhưng công ty này đã trở nên quen thuộc với những người sành sỏi trong thế giới SQL. Gần đây, Solid trở thành người phân phối lại của MySQL Enterprise và họ cũng là một bạn hàng của MySQL. Sản phẩm "solidDB for MySQL" của công ty này (từ giờ chỉ gọi là Solid) về mặt kỹ thuật là sự kết hợp server của MySQL (MyISAM) và bộ máy lưu trữ solidDB. Bộ máy lưu trữ thực hiện công việc nâng chuyển nặng (như file...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: SolidDB cho MySQL Solid Information Technology
- SolidDB cho MySQL Solid Information Technology ( www.soliddb.com/www.solidtech.com ) ra đời và hoạt động từ vài năm nay. Tuy không quá n ổi bật nhưng công ty này đã trở nên quen thuộc với những người sành sỏi trong thế giới SQL. Gần đây, Solid trở thành người phân phối lại của MySQL Enterprise và họ cũng là một bạn hàng của MySQL. Sản phẩm "solidDB for MySQL" của công ty này (từ giờ chỉ gọi là Solid) về mặt kỹ thuật là sự kết hợp server của MySQL (MyISAM) và bộ máy lưu trữ solidDB. Bộ máy l ưu trữ thực hiện công việc nâng chuyển nặng (như file IO, tìm kiếm chỉ mục, khôi phục file log,…). C òn server của MySQL có nhiệm vụ lập kế hoạch và các liên hệ (như phân tích cú pháp SQL, tối ưu, file log thông thường,…). Một số bộ máy l ưu trữ đáng quan tâm là MyISAM c ủa MySQL, InnoDB của InnoBase Oy và cơ chế mới được công bố gần đây “Falcon” cho MySQL 5.1 (http://dev.MySQL.com/doc/refman/5.1/en/se-falcon.html). Download Solid có m ột số điểm khác cơ bản với bộ máy l ưu trữ khác: nó không có trong phân phối MySQL thông thường. Nếu muốn dùng Solid bạn phải download từ forge.MySQL.com hoặc tốt nhất là trên website của công ty: http://dev.soliddb.com/download/ . Một mẫu đăng ký được đưa ra khi vào website, nhưng bạn có thể bỏ qua bằng cách kích vào: "No thanks. Go to Downloads". Tại thời điểm viết bài này, thông tin trang web là: solidmysql-5.0.27.0050 released on December 19, 2006 Windows Windows binary Windows source solidDB for MySQL User Guide for Windows (solidDB cho MySQL User Guide trên Windows) Release Notes Linux 32-bit Linux 32-bit binary Linux source solidDB for MySQL User Guide for Linux (solidDB cho MySQL User Guide trên Linux)
- Release Notes Linux 64-bit Linux 64-bit binary Linux source solidDB for MySQL User Guide for Linux Release Notes Chúng ta có thể hy vọng rằng Solid sẽ nhanh chóng hỗ trợ đầy đủ cho mọi thành phần trên danh sách MySQL Enterprise "Supported Platforms" http://www.MySQL.com/support/supportedplatforms/enterprise.html . Nhưng người dùng Solaris, HP-UX và Apple có thể sẽ thất vọng một chút. Lựa chọn bản download Linux 64-bit và chọn nơi đặt là khu vực cá nhân /home/pgulutzan/Desktop, ph ần download có dạng: pgulutzan@linux:~/Desktop> cd /home/pgulutz an/Desktop pgulutzan@linux:~/Desktop> tar zxvf solidmysql-5.0.27-linux-x86_64-glibc23-0050.tar.gz ... [list of files] ... pgulutzan@linux:~/Desktop> cd solidmysql-5.0.27-linux-x86_64-glibc23-0050 pgulutzan@linux: ~/Desktop/solidmysql-5.0.27-linux-x86_64-glibc23-0050> su root Password: linux:/home/pgulutzan/Desktop/solidmysql-5.0.27-linux-x86_64-glibc23-0050 # bin/mysqld --user=root --skip-networking --default-storage-engine=solid solidDB for MySQL 5.0.27 - 06.00.0050 (Linux 2.6.13 AMD64 64bit MT) Copyright (C) Solid Information Technology Ltd 1993 -2006 Database started. 070101 16:39:57 InnoDB: Started; log sequence number 0 12719128 070101 16:39:57 [ERROR] Can't open shared library 'udf_example.so' (errno: 0 udf_example.so: cannot open shared object file: No such file or directory)
- 070101 16:39:57 [Note] bin/mysqld: ready for connections. Version: '5.0.27' socket: '/tmp/MySQL.sock' port: 0 Source Distribution Khi download nó không bị cản trở bởi các cài đặt đã có trên MySQL, mặc dù để an toàn tôi đã tắt tất cả chương trình mysqld đang mở trước khi tiến hành. Ấn tượng đầu tiên Trước khi sử dụng cơ chế Solid, xem xét lại trong MySQL với ch ương trình MySQL client: MySQL> SELECT VERSION(); +-----------+ | version() | +-----------+ | 5.0.27 | +-----------+ 1 row in set (0.00 sec) Đọc phần hiển thị trên: Chỉ có một phiên bản dùng được là 5.0.27. Sau này nó sẽ là "SolidDB for MySQL 5.1", nhưng bây giờ chúng ta chưa thể chơi được với các thành phần mới của MySQL 5.1 như event (sự kiện), partition (phân v ùng) hay row-level log. MySQL> SHOW ENGINES; +------------+---------+----------------------------------------------------- + | Engine | Support | Comment | +------------+---------+----------------------------------------------------- + | solidDB | YES | Fully transactional disk -based engine with multiversion optimistic/pessimistic concurrency control | ... Đọc phần hiển thị trên: Các bộ máy lưu trữ có thể dùng được là Solid, cơ chế “tại gia” của MySQL và InnoDB. Chúng ta có thể dùng hai cơ chế với nhau cùng một lúc.
- MySQL> SHOW VARIABLES LIKE 'solid%'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | soliddb_cache_size | 67108864 | | soliddb_durability_level | 3 | | soliddb_logdir | | | soliddb_backupdir | | | soliddb_admin_command | | | soliddb_checkpoint_deletelog | ON | | soliddb_filespec | | | soliddb_lock_wait_timeout | 30 | | soliddb_db_block_size | 8192 | | soliddb_log_block_size | 16384 | | soliddb_backup_block_size | 65536 | | soliddb_checkpoint_interval | 50000 | | soliddb_checkpoint_time | 0 | | soliddb_io_threads | 5 | | soliddb_lockhash_size | 1000000 | | soliddb_pessimistic | ON | | soliddb_write_threads | 1 | | soliddb_extend_increment | 500 | | soliddb_readahead | 4 | +------------------------------+----------+ 19 rows in set (0.00 sec) Đọc phần hiển thị trên: Một số biến liên quan đến Solid bạn có thể dùng để điều chỉnh, nhưng các giá trị mặc định khá ổn. Bảng Solid đầu tiên MySQL> CREATE DATABASE solidtest; Query OK, 1 row affected (0.00 sec) MySQL> USE solidtest; Database changed MySQL>
- CREATE TABLE t (s1 INT,s2 VARCHAR(1000)) EN GINE=SOLIDDB; Query OK, 0 rows affected (0.01 sec) MySQL> CREATE INDEX i ON t (s1); Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 MySQL> INSERT INTO t VALUES (1,'a'); Query OK, 1 row affected (0.01 sec) MySQL> SELECT * FROM t; +------+------+ | s1 | s2 | +------+------+ |1|a| +------+------+ 1 row in set (0.00 sec) Đọc phần hiển thị trên: Chỉ có một điểm khác là phải cung cấp thông tin "ENGINE=SOLIDDB" khi tạo bảng.(Thực tế bạn không cần phải khai báo điều này nếu sử dụng mặc định Solid là bộ máy lưu trữ). Các lệnh SQL không có g ì khác biệt. Khi khai báo bảng này là Solid, MySQL sẽ biết nó phải dùng bộ máy lưu trữ của Solid khi làm việc với bảng. Và bây giờ là giao dịch kiểm tra đầu tiên. MySQL> SET @@autocommit=0; Query OK, 0 rows affected (0.00 sec) MySQL> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) MySQL> INSERT INTO t VALUES (2,'b'); Query OK, 1 row affected (0.00 sec) MySQL> ROLLBACK; Query OK, 0 rows affected (0.00 sec)
- MySQL> SELECT * FROM t WHERE s1 = 2; Empty set (0.00 sec) Đọc phần hiển thị trên: Kết quả của cả đoạn mã chỉ ra: Solid l à bộ máy lưu trữ “giao dịch”. Điều này khác so với MyISAM và giống InnoDB, Falcon nhiều hơn. Kiểm tra độ chính xác về thời gian Website của Solid có một số lệnh khác nhau về tốc độ và kết quả kiểm tra riêng của họ như TM1, kiểm tra với nhiều sơ đồ cho thấy Solid nhanh hơn InnoDB: http://www.solidtech.com/developers/CarrierGrade/TM1/SolidDB_TM1Bench mark.pdf DELIMITER // CREATE PROCEDURE p () BEGIN DECLARE v INT DEFAULT 0; WHILE v < 10000 DO INSERT INTO t VALUES (v,'cde'); SET v = v + 1; END WHILE; END// DELIMITER ; CALL p(); -- Time this SELECT SUM(s1) FROM t; -- Time this UPDATE t SET s2=CONCAT(s2,s2); -- Time this Khi thực hiện kiểm tra như vậy với phiên bản mới nhất MySQL 5.1, khai báo "engine=myisam" và "engine=innodb" thay vì "engine=solid", kết quả đưa ra là (tất cả thời gian đều tính bằng giây): MyISAM InnoDB Solid INSERT 0.78 3.92 9.01 UPDATE 0.01 0.03 0.20
- DELETE 0.13 1.47 0.94 Bạn có thể thấy Solid hoàn toàn xứng đáng trở thành thành viên mới đáng mong đợi của cộng đồng l ưu trữ MySQL. Đó mới chỉ là bài kiểm tra đơn giản. Để có đánh giá chính xác h ơn, chúng ta sẽ phải thực hiện một số kiểm tra phức tạp khác, nhưng ấn tượng đầu tiên về Solid quả là không tồi. Những cái còn thiếu Có một số thành phần không được hỗ trợ trong Solid. Không phải thành phần nào cũng được chú ý, hoan nghênh, nhưng hầu hết chúng đều có mặt trong một số bộ máy lưu trữ MySQL khác. Và không ít cư dân của cộng đồng SQL sẽ thấy tiếc khi vắng mặt chúng. Chỉ có một kiểu đối c hiếu “chữ hoa Latin1”. Chỉ có một kiểu đối chiếu chữ là latin1_general_cs. Nếu có cột nào khác không phải tập hợp ký tự Latin hoặc không viết hoa, bạn không thể t ìm thấy nó. Fulltext (phải gõ đầy đủ tên) Đây không phải là thiếu sót của Solid, nhưng kiểu chỉ mục “fulltext” có trong MyISAM và chưa được thay đổi. Tổng kết và thực hiện một số phép ngoại suy trên phần gỡ lỗi, từ một số e-mail của bộ phận hỗ trợ kỹ thuật Solid thì các thành phần MySQL sau chưa có trên Solid: Các chỉ mục FULLTEXT INSERT DELAYED BACKUP LOAD INDEX OPTIMIZE SAVEPOINT Unsigned BIGINT Các cột UNIQUE có nhiều hơn một giá trị NULL Hầu hết các kiểu đối chiếu. Tất cả thành phần MySQL 5.1 mới. Một số platform. Một số thành phần mới chưa có trên bộ máy lưu trữ khác
- Solid có một số thứ mà bạn sẽ không thể tìm ra trên bất cứ cơ chế nào khác của MySQL. Chẳng hạn các Foreign Keys hiện ch ưa có trên Falcon. Foreign Keys Solid có m ột số nhược điểm giống InnoDB (nh ư không thể tham chiếu nội tuyến) và một số nhược điểm khác (bạ n có thể tìm thấy các than phiền về chúng trên Bug Tracker: http://dev.soliddb.com/bug ). Nhưng Solid kiểm tra vi phạm khóa ngoại foreign-key ở “cuối lệnh”, còn InnoDB thì không. Dưới đây là một ví dụ trong đó tôi sử dụng lệnh UPDATE bảng khóa chính. Đó có thể là nguyên nhân vi phạm khóa ngoại trong lệnh, nh ưng không phải ở cuối. Khi khai báo: engine=solid, ki ểm tra hợp lệ và được thông qua. Còn với engine=innodb, kiểm tra thất bại. MySQL> create table t1a (s1 int, primary key(s1)) engine=solid; Query OK, 0 rows affected (0.02 sec) MySQL> create table t1b (s1 int, foreign key (s1) references t1a(s1)) engine=solid; Query OK, 0 rows affected (0.02 sec) MySQL> insert into t1a values (1),(2); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 MySQL> insert into t1b values (1); Query OK, 1 row affected (0.00 sec) MySQL> update t1a set s1 = s1 - 1; /* This won't cause an error! */ Query OK, 2 rows affected (0.04 sec) Rows matched: 2 Changed: 2 Warnings: 0 MySQL> create table t7a (s1 int, primary key(s1)) engine=innodb; Query OK, 0 rows affected (0.05 sec) MySQL> create table t7b (s1 int, foreign key (s1) references t7a(s1)) engine=innodb; Query OK, 0 rows affected (0.05 sec)
- MySQL> insert into t7a values (1),(2); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 MySQL> insert into t7b values (1); Query OK, 1 row affected (0.01 sec) MySQL> update t7a set s1 = s1 - 1; /* This will cause an error! */ ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails Chức năng phục hồi mạnh Solid có thể phục hồi chính xác và nhanh chóng sau khi gặp sự cố. Tôi đã thử một số kiểm tra thông th ường như 'kill -9 ' khi chương trình đang update một bảng lớn. Quá trình không bị ngắt quãng. Chọn Optimistic hay Pessimistic Các kế hoạch optimistic và “multi-versioning” (đa phiên bản) rất phổ biến, như trong InnoDB / PostgreSQL / Oracle / Falcon hay trong Solid (mặc định). Nhưng kế hoạch pesimistic (định hình các “khóa” truyền thống và quen thuộc cho kiểm soát trùng hợp) chỉ có trong Solid (với tùy chọn --soliddb_pessimistic ). Điều này quả là tuyệt, là nơi cho các kế hoạch pessimistic in shop và việc chuyển từ DB2 hay SQL Server dễ dàng dễ dàng hơn. Đây chính là Big Unique Feature của Solid. Duy trì giao dịch Khi viết bài này tôi đang có hai máy client MySQL chạy các giao dịch trên bảng Solid với tổng số một triệu hàng. Nguy cơ xung đột luôn tiềm ẩn khi tìm kiếm nhiều hàng hay thay đổi, update một hàng. Công việc này diễn ra từ một đến hai giờ và chưa thể kiểm chứng được nó có hiệu quả cho các hoạt động kinh doanh lâu dài hay không. Có một số tài liệu tham khảo, nhưng tốt nhất là bạn nên download, thử nghiệm trực tiếp phần mềm. Nó khá dễ hiểu và hoàn toàn miễn phí. T.Thu (Theo Database)
CÓ THỂ BẠN MUỐN DOWNLOAD
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn