আমার প্রথম উত্তরে আমাকে অনেকগুলি পরিবর্তন করতে হবে আমি এটি শুরু করব !!!
USE test
DROP TABLE IF EXISTS ngram_key;
DROP TABLE IF EXISTS ngram_rec;
DROP TABLE IF EXISTS ngram_blk;
CREATE TABLE ngram_key
(
NGRAM_ID UNSIGNED BIGINT NOT NULL AUTO_INCREMENT,
NGRAM VARCHAR(64) NOT NULL,
PRIMARY KEY (NGRAM),
KEY (NGRAM_ID)
) ENGINE=MyISAM ROW_FORMAT=FIXED PARTITION BY KEY(NGRAM) PARTITIONS 256;
CREATE TABLE ngram_rec
(
NGRAM_ID UNSIGNED BIGINT NOT NULL,
YR SMALLINT NOT NULL,
MC SMALLINT NOT NULL,
PC SMALLINT NOT NULL,
VC SMALLINT NOT NULL,
PRIMARY KEY (NGRAM_ID,YR)
) ENGINE=MyISAM ROW_FORMAT=FIXED;
CREATE TABLE ngram_blk
(
NGRAM VARCHAR(64) NOT NULL,
YR SMALLINT NOT NULL,
MC SMALLINT NOT NULL,
PC SMALLINT NOT NULL,
VC SMALLINT NOT NULL
) ENGINE=BLACKHOLE;
DELIMITER $$
CREATE TRIGGER populate_ngram AFTER INSERT ON ngram_blk FOR EACH ROW
BEGIN
DECLARE NEW_ID BIGINT;
INSERT IGNORE INTO ngram_key (NGRAM) VALUES (NEW.NGRAM);
SELECT NGRAM_ID INTO NEW_ID FROM ngram_key WHERE NGRAM=NEW.NGRAM;
INSERT IGNORE INTO ngram_rec VALUES (NEW_ID,NEW.YR,NEW.MC,NEW.PC,NEW.VC);
END; $$
DELIMITER ;
INSERT INTO ngram_blk VALUES
('rolando',1965,31,29,85),
('pamela',1971,33,21,86),
('dominique',1996,30,18,87),
('diamond',1998,13,28,88),
('rolando edwards',1965,31,29,85),
('pamela edwards',1971,33,21,86),
('dominique edwards',1996,30,18,87),
('diamond edwards',1998,13,28,88),
('rolando angel edwards',1965,31,29,85),
('pamela claricia edwards',1971,33,21,86),
('dominique sharlisee edwards',1996,30,18,87),
('diamond ashley edwards',1998,13,28,88);
UPDATE ngram_rec SET yr=yr+1,mc=mc+30,pc=pc+30,vc=vc+30;
INSERT INTO ngram_blk VALUES
('rolando',1965,31,29,85),
('pamela',1971,33,21,86),
('dominique',1996,30,18,87),
('diamond',1998,13,28,88),
('rolando edwards',1965,31,29,85),
('pamela edwards',1971,33,21,86),
('dominique edwards',1996,30,18,87),
('diamond edwards',1998,13,28,88),
('rolando angel edwards',1965,31,29,85),
('pamela claricia edwards',1971,33,21,86),
('dominique sharlisee edwards',1996,30,18,87),
('diamond ashley edwards',1998,13,28,88);
UPDATE ngram_rec SET yr=yr+1,mc=mc+30,pc=pc+30;
INSERT INTO ngram_blk VALUES
('rolando',1965,31,29,85),
('pamela',1971,33,21,86),
('dominique',1996,30,18,87),
('diamond',1998,13,28,88),
('rolando edwards',1965,31,29,85),
('pamela edwards',1971,33,21,86),
('dominique edwards',1996,30,18,87),
('diamond edwards',1998,13,28,88),
('rolando angel edwards',1965,31,29,85),
('pamela claricia edwards',1971,33,21,86),
('dominique sharlisee edwards',1996,30,18,87),
('diamond ashley edwards',1998,13,28,88);
UPDATE ngram_rec SET yr=yr+1,mc=mc+30;
SELECT * FROM ngram_key;
SELECT * FROM ngram_rec;
SELECT A.ngram NGram,B.yr Year,B.mc Matches,B.pc Pages,B.vc Volumes FROM
ngram_key A,ngram_rec B
WHERE A.ngram='rolando angel edwards'
AND A.ngram_id=B.ngram_id;
মূল তথ্যের এনজিওম সংরক্ষণের জন্য বছরের তথ্যের জন্য অনেক ছোট টেবিল তবে আরও বড় কী। আমি পরীক্ষার তথ্যের পরিমাণও বাড়িয়েছি। আপনি এটি সরাসরি মাইএসকিউএল এ কেটে পেস্ট করতে পারেন।
বিচারকার্য স্থগিত রাখার আদেশ
কেবল ROW_FORMAT সরান এবং এটি ডাইমনিক হয়ে যায় এবং এনজিআর_কি টেবিলগুলি আরও অনেক ছোট সংক্ষেপে সংক্ষিপ্ত করে।
ডিস্কস্পেস মেট্রিক্স
nrgram_rec এ এনজিআর_আইডি এর
জন্য সারি 8 বাইটে 17 বাইট রয়েছে (সর্বাধিক স্বাক্ষরবিহীন মান 18446744073709551615 [2 ^ 64 - 1])
8 টি বাইট 4 স্ক্রিন্টের জন্য (2 বাইট প্রতিটি)
1 বাইট মাইআইএসএএম অভ্যন্তরীণ মুছুন পতাকা
এনগ্রাম_রেক = 10 বাইট (8 (এনজিআর_আইডি) + 2 (বছর) এর জন্য সূচক এন্ট্রি
47 মিলিয়ন সারি X 17 বাইট প্রতি সারি = 0799 মিলিয়ন বাইট = 761.98577 এমবি
47 মিলিয়ন সারি X 12 বাইট প্রতি সারি = 0564 মিলিয়ন বাইট = 537.85231 এমবি
47 মিলিয়ন সারি X 29 বাইট প্রতি সারি = 1363 মিলিয়ন বাইট = 1.269393 জিবি
5 বিলিয়ন সারি X 17 বাইট প্রতি সারি = 085 বিলিয়ন বাইট = 079.1624 জিবি
5 বিলিয়ন সারি X 12 বাইট প্রতি সারি = 060 বিলিয়ন বাইট = 055.8793 জিবি
5 বিলিয়ন সারি X 29 বাইট প্রতি সারি = 145 বিলিয়ন বাইট = 135.0417 জিবি
ngram_key এর এনগ্রামের জন্য by৩ বাইট 64৪ বাইট রয়েছে (ROW_FORMAT = চার্জে স্থির সেট করা হয়েছে) এনজিআর_আইডি 1 বাইটের জন্য 8 বাইট মাইআইএসএএম অভ্যন্তরীণ মুছুন পতাকা
Ngram_key = 64 বাইট + 8 বাইট = 72 বাইটের জন্য 2 সূচক এন্ট্রি
47 মিলিয়ন সারি X 073 বাইট প্রতি সারিতে = 3431 মিলিয়ন বাইট = 3.1954 জিবি
47 মিলিয়ন সারি X 072 বাইট প্রতি সারি = 3384 মিলিয়ন বাইট = 3.1515 জিবি
47 মিলিয়ন সারি X 145 বাইট প্রতি সারিতে = 6815 মিলিয়ন বাইট = 6.3469 জিবি
5 বিলিয়ন সারি এক্স 073 বাইট প্রতি সারিতে = 365 বিলিয়ন বাইট = 339.9327 জিবি
5 বিলিয়ন সারি এক্স 072 বাইট প্রতি সারি = 360 বিলিয়ন বাইট = 335.2761 জিবি
5 বিলিয়ন সারি এক্স 145 বাইট প্রতি সারি = 725 বিলিয়ন বাইট = 675.2088 জিবি