Bài này tôi viết trên fb hơn 1.5 năm trước
→ giờ kéo về nhà làm kỉ niệm
Tạo 1 tỷ dòng dữ liệu trong tầm tay của bạn!!!
Đi chơi vòng vòng trên fb thấy có người chia sẻ kinh nghiệm làm cơ sở dữ liệu database hay DB gì đó
→ thiệt là hoành tá tràng như quản lý DB 1 tỷ dòng, quản lý DB to vài TB
Thiệt là ham quá đi nhưng mà đào đâu ra mấy cái đó bi giờ
Tìm hoài trên mạng mấy cái DB mẫu được mấy ông tây share cho người đời cũng chỉ có vài trăm nghìn dòng là cùng
Hổng lẽ chịu bó tay sao?
→ phải tự vào bếp nấu ăn vậy. Hơi cực 1 chút nhưng có cái để ăn
Đi chợ mua giúp tui 2 thứ: thời gian + 1 cái đĩa hay dĩa to to để đựng đồ ăn
→ các công việc còn lại tui sẽ chỉ bạn ở cuối bài, chủ yếu là Ctrl + C, Ctrl + V bạn sẽ có đồ ăn
Về thời gian trước khi nấu nướng chúng ta cần sơ chế nó trước
Thời xưa đi học + đọc sách báo tin học thấy nói là CPU của máy tính có thể tính được cả tỷ phép tính 1 giây…
→ làm cậu học trò hạng bét như tui cứ nghệch mặt ra
1 tỷ phép tính 1 giây? → vậy là trong 1 phần tỷ giây nó làm 1 phép tính à?
→ thiệt là khó tin, đo còn k được huống chi còn tính toán nữa chứ!!!
Sau này mới biết phần tỷ giây chẳng thấm vào đâu cả.
Thời gian nhỏ nhất mà con người nghĩ ra được và có ý nghĩa thực tế là 10-43 giây (thời gian Planck)
→ đây là khoảng thời gian để 1 photon vượt qua được một khoảng cách bằng độ dài Planck trong môi trường chân không với vận tốc ánh sáng 3.108m/giây
→ chân = thật, thiệt ; chân không = thiệt sự hổng có gì
Zậy còn thời gian nhỏ hơn nữa như 10-100 giây thì sao?
→ cũng có nhưng chả biết để làm việc gì
Nói thêm: Độ dài Planck = 10-35m đây là khoảng cách mà lý thuyết về vạn vật hút nhau hay hấp dẫn nhau của ông Newton hổng còn tác dụng nữa
→ lúc này lý thuyết lượng tử lên ngôi, hoàng thượng vạn tuế, vạn vạn tuế!!!
Kế tiếp là thời gian mà con người thực sự điều khiển được sẽ tính = pico giây (picosecond).
1 pico giây = 1 phần ngàn tỷ giây = 10^-12 giây
Xứ cờ hoa chế ra được cái streak camera trong 180 femto giây có thể chụp được 1 tấm hình
1 femto giây = 10-15 giây
→ vậy các bạn của tui ơi, 180 femto giây lớn hơn hay nhỏ hơn 1 pico giây ạ?
330 pico giây là thời gian để CPU của 1 máy tính 3.0 GHz xử lí xong 1 lệnh
→ nó đây ạ
→ hết phần sơ chế thời gian
Đến phần chiên nướng thời gian
Bỏ thời gian vào cái CPU để nướng chín nó
Hơi thất vọng vì trong ngôi nhà Windows chỉ cho ra 7 con số = vài trăm nano giây.
1 nano giây = 1 phần tỷ giây = 10-9 giây
Có chút phấn khởi khi ngôi nhà Linux cho ra 9 con số = nano giây
Trong nhà Windows hay Linux có con trăn
→ xứ cờ hoa gọi là python chậm chạp chỉ nhả ra được 6 con số = micro giây
→ khoe để người ta biết biết mình biết code python đồ
→ hết phần chiên nướng thời gian
Viết chương trình C như mí cái trên nha
Tới phần cuối cùng là dọn ra ăn
Đồ ăn bự khoảng 56 GB
→ nhớ chọn cái đĩa hay dĩa to to 1 chút nha
Dọn đồ ăn thô (raw data) ra file
Đếm 1 tỉ dòng hết bao lâu?
1 giây thêm được bao nhiêu dòng dữ liệu?
Công thức nấu ăn đây ạ
→ ở đây tui chọn MySQL để tạo 1 tỷ dòng vì nó như con ngựa của BKS, còn Oracle như con ngựa của LVN
Công thức nấu ăn – Tạo 1 tỉ dòng dữ liệu trên MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | DROP DATABASE IFEXISTS thờigian; CREATE SCHEMA thờigian DEFAULTCHARACTER SET utf8mb4; --database=schema USEthờigian; CREATE TABLEdòngthờigian( sốBIGINT UNSIGNEDNOTNULLAUTO_INCREMENT, trôiqua VARCHAR(26)NOTNULL, PRIMARY KEY(số)) ENGINE=InnoDB DEFAULTCHARACTER SET=utf8mb4; --tăngtốcđộlên2x,3xkhitắtbinlog --chỉăntrong phiênlàmviệc(session)hiệntại SET sql_log_bin=off; --Muốntắthoàntoànbinlog thìphải --/etc/my.cnf --[mysqld] --disable_log_bin --sauđósystemctl restart mysqld DELIMITER// CREATE PROCEDURE thờigian() BEGIN DECLAREiINTDEFAULT1; WHILE(i)DO INSERT INTOdòngthờigian(trôiqua)values(current_timestamp(6)); ENDWHILE; END // DELIMITER// CREATE PROCEDURE killthờigian() BEGIN DECLAREtiếntrình SMALLINT; SELECT id INTO tiếntrình FROM information_schema.processlist WHERE info='INSERT INTO dòngthờigian (trôiqua) values (current_timestamp(6))'; KILL tiếntrình; END // DELIMITER; --chạyfile sql --mysql-uroot-p'password'<1tydong.sql --sinh ra1tỷdòng-->mấyngàyànhen --mysql-uroot-p'password'-e'use thờigian; call thờigian' --mở1terminal khác,đếmxemcóbi nhiêudòng roài --mysql-uroot-p'password'-e'use thờigian; select count(1) from dòngthờigian' --sợchạylâutốnđiệnquáthìmở1terminal khác --mysql-uroot-p'password'-e'use thờigian; call killthờigian' --Cácbạntảifile CSV chứa1tỷdòngởđây,đỡtốntiềnđiệnchạy4-5ngày --https://www.mediafire.com/folder/8udqydmaqlxi5/db_1tydong |
Học lập trình bạn thường được dặn là cần kết thúc vòng lặp lẹ lẹ
→ trường hợp này thì ngược lại
→ bạn cần cho nó chạy quài quài đến khi nào cái đĩa của bạn không chứa nổi đồ ăn thì thoai
Nov282022
Tối ưu cơ sở dữ liệu như thế nào?
Bài này tôi viết trên fb hơn 1.5 năm trước
→ giờ kéo về nhà làm kỉ niệm
Tạo 1 tỷ dòng dữ liệu trong tầm tay của bạn!!!
Đi chơi vòng vòng trên fb thấy có người chia sẻ kinh nghiệm làm cơ sở dữ liệu database hay DB gì đó
→ thiệt là hoành tá tràng như quản lý DB 1 tỷ dòng, quản lý DB to vài TB
Thiệt là ham quá đi nhưng mà đào đâu ra mấy cái đó bi giờ
Tìm hoài trên mạng mấy cái DB mẫu được mấy ông tây share cho người đời cũng chỉ có vài trăm nghìn dòng là cùng
Hổng lẽ chịu bó tay sao?
→ phải tự vào bếp nấu ăn vậy. Hơi cực 1 chút nhưng có cái để ăn
Đi chợ mua giúp tui 2 thứ: thời gian + 1 cái đĩa hay dĩa to to để đựng đồ ăn
→ các công việc còn lại tui sẽ chỉ bạn ở cuối bài, chủ yếu là Ctrl + C, Ctrl + V bạn sẽ có đồ ăn
Về thời gian trước khi nấu nướng chúng ta cần sơ chế nó trước
Thời xưa đi học + đọc sách báo tin học thấy nói là CPU của máy tính có thể tính được cả tỷ phép tính 1 giây…
→ làm cậu học trò hạng bét như tui cứ nghệch mặt ra
1 tỷ phép tính 1 giây? → vậy là trong 1 phần tỷ giây nó làm 1 phép tính à?
→ thiệt là khó tin, đo còn k được huống chi còn tính toán nữa chứ!!!
Sau này mới biết phần tỷ giây chẳng thấm vào đâu cả.
Thời gian nhỏ nhất mà con người nghĩ ra được và có ý nghĩa thực tế là 10-43 giây (thời gian Planck)
→ đây là khoảng thời gian để 1 photon vượt qua được một khoảng cách bằng độ dài Planck trong môi trường chân không với vận tốc ánh sáng 3.108m/giây
→ chân = thật, thiệt ; chân không = thiệt sự hổng có gì
Zậy còn thời gian nhỏ hơn nữa như 10-100 giây thì sao?
→ cũng có nhưng chả biết để làm việc gì
Nói thêm: Độ dài Planck = 10-35m đây là khoảng cách mà lý thuyết về vạn vật hút nhau hay hấp dẫn nhau của ông Newton hổng còn tác dụng nữa
→ lúc này lý thuyết lượng tử lên ngôi, hoàng thượng vạn tuế, vạn vạn tuế!!!
Kế tiếp là thời gian mà con người thực sự điều khiển được sẽ tính = pico giây (picosecond).
1 pico giây = 1 phần ngàn tỷ giây = 10^-12 giây
Xứ cờ hoa chế ra được cái streak camera trong 180 femto giây có thể chụp được 1 tấm hình
1 femto giây = 10-15 giây
→ vậy các bạn của tui ơi, 180 femto giây lớn hơn hay nhỏ hơn 1 pico giây ạ?
330 pico giây là thời gian để CPU của 1 máy tính 3.0 GHz xử lí xong 1 lệnh
→ nó đây ạ
→ hết phần sơ chế thời gian
Đến phần chiên nướng thời gian
Bỏ thời gian vào cái CPU để nướng chín nó
Hơi thất vọng vì trong ngôi nhà Windows chỉ cho ra 7 con số = vài trăm nano giây.
1 nano giây = 1 phần tỷ giây = 10-9 giây
Có chút phấn khởi khi ngôi nhà Linux cho ra 9 con số = nano giây
Trong nhà Windows hay Linux có con trăn
→ xứ cờ hoa gọi là python chậm chạp chỉ nhả ra được 6 con số = micro giây
→ khoe để người ta biết biết mình biết code python đồ
→ hết phần chiên nướng thời gian
Hỏi
Viết chương trình C như mí cái trên nha
Tới phần cuối cùng là dọn ra ăn
Đồ ăn bự khoảng 56 GB
→ nhớ chọn cái đĩa hay dĩa to to 1 chút nha
Dọn đồ ăn thô (raw data) ra file
Đếm 1 tỉ dòng hết bao lâu?
1 giây thêm được bao nhiêu dòng dữ liệu?
Công thức nấu ăn đây ạ
→ ở đây tui chọn MySQL để tạo 1 tỷ dòng vì nó như con ngựa của BKS, còn Oracle như con ngựa của LVN
Công thức nấu ăn – Tạo 1 tỉ dòng dữ liệu trên MySQL
Học lập trình bạn thường được dặn là cần kết thúc vòng lặp lẹ lẹ
→ trường hợp này thì ngược lại
→ bạn cần cho nó chạy quài quài đến khi nào cái đĩa của bạn không chứa nổi đồ ăn thì thoai
By Trung Hiếu Nguyễn •Database optimization, Học lập trình, MySQL Performance Tuning, Query Performance Optimization, SQL Query optimization, Tối ưu câu truy vấn SQL, Tối ưu cơ sở dữ liệu, Tối ưu MySQL