MySQL BIGINT පැහැදිලි කිරීම: පරාසය, භාවිතා කේස්, කාර්ය සාධන උපදෙස් සහ හොඳම ක්‍රම

目次

1. හැඳින්වීම

When managing large-scale data or long-term data storage in MySQL, selecting the appropriate integer data type is extremely important. In particular, when handling very large numeric values, the BIGINT data type becomes highly relevant. But what characteristics does BIGINT have, and in what situations should it be used?

This article explains the features, use cases, and important considerations of MySQL’s BIGINT type in detail. With practical SQL examples included, the explanation is designed to be easy to understand for beginners and intermediate users alike.

2. MySQL හි BIGINT වර්ගය කුමක්ද?

BIGINT සමාලෝචනය

BIGINT යනු MySQL හි ලබා ගත හැකි විශාලතම පූර්ණ සංඛ්‍යාත්මක දත්ත වර්ගයයි. එය 64 බිට් (8 බයිට්) ගබඩා කරයි සහ අත්සන් (SIGNED) සහ අත්සන් නොකළ (UNSIGNED) අගයන් දෙකම සහය දක්වයි.

  • අත්සන් (SIGNED): -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
  • අත්සන් නොකළ (UNSIGNED): 0 to 18,446,744,073,709,551,615

මෙම අති විශාල සංඛ්‍යාත්මක පරාසය නිසා, විශාල පරිමාණ ID කළමනාකරණය හෝ උසස් පරිමාණ ගණනය කිරීම් අවශ්‍ය වන පද්ධතිවල BIGINT විශේෂයෙන් ප්‍රයෝජනවත් වේ.

පූර්ණ සංඛ්‍යාත්මක වර්ගවල සංසන්දනය

පහත MySQL හි ලබා ගත හැකි ප්‍රධාන පූර්ණ සංඛ්‍යාත්මක වර්ගවල සංසන්දන වගුවකි.

Data TypeSizeSigned RangeUnsigned RangeTypical Use Case
TINYINT1 byte-128 to 1270 to 255Small flags or counters
SMALLINT2 bytes-32,768 to 32,7670 to 65,535Indexes for small datasets
INT4 bytes-2,147,483,648 to 2,147,483,6470 to 4,294,967,295General-purpose IDs or quantity management
BIGINT8 bytes-9,223,372,036,854,775,808 to 9,223,372,036,854,775,8070 to 18,446,744,073,709,551,615Large-scale IDs or high-precision numerical management

වගුවේ පෙන්වා ඇති පරිදි, අනෙකුත් පූර්ණ සංඛ්‍යාත්මක වර්ගවලට සාපේක්ෂව BIGINT ඉතා පුළුල් සංඛ්‍යාත්මක පරාසයක් සහය දක්වයි. එබැවින්, දිගුකාලීන විස්තාරණය සැලකිල්ලට ගත යුතු පද්ධති නිර්මාණය කරන විට එය උත්තරීතර තේරීමකි.

3. BIGINT හි භාවිතා කේස් සහ ප්‍රායෝගික උදාහරණ

BIGINT දත්ත වර්ගය පහත සඳහන් අවස්ථා සඳහා සුදුසු වේ.

පරිශීලක ID සහ ගනුදෙනු ID කළමනාකරණය

අද්විතීය හැඳුනුම්පත් කළමනාකරණය කරන විට, ඉතා විශාල දත්ත පරිමාණයන්ට අනුකූල වීමට BIGINT බහුලව භාවිතා වේ.

CREATE TABLE users (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -- Unique user ID
    name VARCHAR(255) NOT NULL,                   -- User name
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Creation timestamp
);

UNIX කාල සටහන් සඳහා BIGINT භාවිතය

ලොග් කළමනාකරණ පද්ධති වැනි, UNIX කාල සටහන් (තත්පර වල) සැකසීමේදීද BIGINT සුදුසු වේ.

CREATE TABLE logs (
    log_id BIGINT PRIMARY KEY,       -- Log ID
    event_time BIGINT NOT NULL       -- Time stored as a UNIX timestamp
);

මුදල් අගයන් සහ ප්‍රමාණයන් කළමනාකරණය

ඉහළ අගයන්ගෙන් යුත් ගනුදෙනු හෝ විශාල ප්‍රමාණයන් සැකසීමේදී, BIGINT සමඟ DECIMAL වර්ගය එකතු කිරීමෙන්, විශාල පරිමාණ දත්ත කළමනාකරණය කරන අතර නිරවද්‍යතාවය රැකගත හැක.

CREATE TABLE sales (
    sale_id BIGINT AUTO_INCREMENT PRIMARY KEY, -- Sales ID
    amount DECIMAL(10, 2) NOT NULL,            -- Amount (up to 2 decimal places)
    sale_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Sales timestamp
);

මෙම උදාහරණ මඟින් BIGINT විශාල පරිමාණ දත්ත කළමනාකරණය සහ උසස් නිරවද්‍ය සංඛ්‍යාත්මක සැකසීම සඳහා ඉතා ප්‍රයෝජනවත් බව පෙන්වයි.

4. BIGINT භාවිතා කිරීමේ වැදගත් සැලකිලි

ගබඩා භාවිතය üzerindeki බලපෑම

BIGINT එක් තීරුවකට බයිට් 8 ක් පරිභෝජනය කරයි. එබැවින්, විශාල දත්ත කට්ටලවල ගබඩා භාවිතය ඉතා වැඩි විය හැක. ගබඩා කාර්යක්ෂමතාවය අත්‍යවශ්‍ය වන පද්ධතිවල, දත්ත වර්ග තේරීමේදී අවධානයෙන් සිටිය යුතුය.

කාර්ය සාධනය üzerindeki බලපෑම

දත්ත පරිමාණය අති විශාල වන විට, සූචක නිර්මාණය සහ සෙවීමේ කාර්ය සාධනයට බලපෑමක් ඇති විය හැක. මෙය අඩු කිරීම සඳහා, සුදුසු සූචක ප්‍රතිපත්ති ක්‍රියාත්මක කර, අවශ්‍ය විට දත්ත කොටස් කිරීම හෝ සංකුචනය ගැන සිතන්න.

අනෙකුත් පද්ධති සමඟ අනුකූලතාව

ඔබට අනෙකුත් පද්ධති සහ වැඩසටහන් භාෂා සමඟ අනුකූලතාවයද සැලකිල්ලට ගත යුතුය. විශේෂයෙන් API සමඟ වැඩ කිරීමේදී හෝ දත්ත ගබඩා ඒකාබද්ධ කිරීමේදී, සහාය දක්වන දත්ත වර්ග පරාසය පද්ධති අතර සමාන බව පෙරමුණේ පරීක්ෂා කරන්න.

5. BIGINT ප්‍රභාවී ලෙස භාවිතා කිරීමේ උපදෙස්

නිවැරදි දත්ත වර්ගය තේරීමේ මාර්ගෝපදේශ

දත්ත ගබඩා නිර්මාණයේ, සුදුසු දත්ත වර්ගය තේරීම සමස්ත පද්ධති කාර්ය සාධනය සහ විස්තාරණය සඳහා විශාල බලපෑමක් ඇති කරයි. පහත BIGINT භාවිතා කිරීමේ තීරණය සඳහා ප්‍රායෝගික මාර්ගෝපදේශ ඇත.

  1. උපරිම දත්ත අගය අනුමාන කරන්න
  • ඉදිරි කාලීන විස්තාරණය සලකා බලමින්, අවශ්‍ය දත්ත ප්‍රමාණය සහ අංක ගණන පෙර අනුමාන කරන්න.
  • උදාහරණය: වසරකට මිලියන 10 ID සෑදෙන අතර, පද්ධතිය 20 වසරකට වැඩ කිරීමට අපේක්ෂා කරනවා නම්, BIGINT අවශ්‍ය විය හැක.
  1. වෙනත් දත්ත වර්ග සමඟ සමතුලිත කරන්න
  • INT හෝ SMALLINT කුඩා දත්ත කට්ටල සඳහා භාවිතා කර ගබඩා භාවිතය උපරිම කරගන්න.
  • උදාහරණය: කුඩා කොඩි කළමනාකරණය සඳහා TINYINT භාවිතා කිරීම ගබඩා පරිභෝජනය අඩු කිරීමට උපකාරී වේ.
  1. ඉදිරි දත්ත මාරු කිරීම සඳහා සැලසුම් කරන්න
  • දත්ත වර්ධනය නිසා සිදුවන අනාගත වර්ග වෙනස්කම් වලින් වැළැක්වීමට, මුලික සැලසුම් අදියරේ සිට විස්තාරණය සලකා බලන්න.
  • උදාහරණය: පරිශීලක කළමනාකරණ පද්ධතිවල ID වර්ධනය අපේක්ෂා කරන විට, ආරම්භයේ සිට BIGINT සකස් කිරීම පසුකාලීන වෙනස්කම් වලින් වැළැක්වීමට උපකාරී වේ.

AUTO_INCREMENT සමඟ එකතු කිරීම

BIGINT විශේෂ ID කළමනාකරණය ස්වයංක්‍රීය කිරීම සඳහා AUTO_INCREMENT සමඟ එකතු කරන විට ඉතා ප්‍රයෝජනවත් වේ.

CREATE TABLE orders (
    order_id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -- Automatically incrementing ID
    customer_id INT UNSIGNED NOT NULL,                  -- Customer ID
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP      -- Order timestamp
);

මෙම උදාහරණයේ, order_id ස්වයංක්‍රීයව අද්විතීය අංකයක් ලබා දේ, අතින් කළමනාකරණය අවශ්‍ය නොවේ.

දර්ශක (Index) සුදානම

දත්ත ප්‍රමාණය වැදගත් ලෙස වැඩි වීමේදී, BIGINT තීරුවලින් විමසුම් කාර්ය සාධනයට බලපෑමක් විය හැක. මෙය වැළැක්වීමට, පහත සුදානම් සලකා බලන්න:

  1. දර්ශක (Indexes) එකතු කරන්න
  • නිතර සෙවෙන තීරුවල දර්ශක සකස් කිරීමෙන් විමසුම් කාර්ය සාධනය වැඩි වේ.
    CREATE INDEX idx_customer_id ON orders(customer_id);
    
  1. සංයුක්ත දර්ශක (Composite Indexes) භාවිතා කරන්න
  • බහු කොන්දේසි අනුව පෙරහන් කිරීමේදී, සංයුක්ත දර්ශක භාවිතා කරන්න.
    CREATE INDEX idx_customer_date ON orders(customer_id, order_date);
    
  1. වෙළඳාම (Partitioning) යොදන්න
  • අති විශාල දත්ත කට්ටල සඳහා, කොටස් කළ දත්ත කළමනාකරණය සඳහා වෙළඳාම (partitioning) සලකා බලන්න.
    ALTER TABLE orders PARTITION BY RANGE (YEAR(order_date)) (
        PARTITION p0 VALUES LESS THAN (2023),
        PARTITION p1 VALUES LESS THAN (2024),
        PARTITION p2 VALUES LESS THAN (2025)
    );
    

මෙම ක්‍රමය විමසුම් සහ එකතු කිරීමේ කාර්ය සාධනය වැදගත් ලෙස වැඩි කරයි.

6. FAQ (නිතර අසන ප්‍රශ්න)

Q1: BIGINT සහ INT අතර වෙනස කුමක්ද?

A1:
BIGINT යනු 64-බිට් පූර්ණ සංඛ්‍යා වර්ගයක් වන අතර, විශාල අගයන් සකස් කළ හැක, එත් INT යනු 32-බිට් වර්ගයක් වන අතර මධ්‍යම ප්‍රමාණයේ දත්ත කට්ටල සඳහා සුදුසුය. ඔබ විශාල දත්ත වර්ධනයක් හෝ ඉහළ විස්තාරණයක් අපේක්ෂා කරනවා නම්, BIGINT වඩාත් සුදුසු වේ.

Q2: සියලු පූර්ණ සංඛ්‍යා තීරුවලට BIGINT භාවිතා කළ යුතුද?

A2:
නැත. දත්ත ප්‍රමාණය කුඩා වන විට අනිවාර්ය නොව BIGINT භාවිතා කිරීම ගබඩා ඉඩ අතුරුදන් කරයි. ඔබේ සැබෑ අවශ්‍යතා අනුව සුදුසුතම වර්ගය තෝරන්න.

Q3: BIGINT AUTO_INCREMENT කාලය කොපමණද?

A3:
උපරිම අනිර්ණිත (unsigned) BIGINT අගය 18,446,744,073,709,551,615 ඉක්මවයි. දිනකට ලක්ෂ 100 රෙකෝඩ් ඇතුළත් කළත්, මෙම පරාසය අවසන් වීමට දහස් ගණනක් වසර ගත වේ. ප්‍රායෝගික ලෙස, එය වාස්තුක ලෙස අසීමිත ලෙස සැලකිය හැක.

Q4: SIGNED සහ UNSIGNED අතර වෙනස කුමක්ද?

A4:
SIGNED වර්ගය ඍණ අගයන්ට ඉඩ දේ, UNSIGNED වර්ගය අ-ඍණ අගයන්ට පමණක් ඉඩ දේ. ඍණ අගයන් අවශ්‍ය නොවේ නම්, UNSIGNED භාවිතා කිරීම උපරිම ධනාත්මක පරාසය වැඩි කරයි.

Q5: INT සිට BIGINT වෙත වෙනස් කිරීම පහසුද?

A5:
ඔව්, ALTER TABLE විධානය භාවිතා කර එය වෙනස් කළ හැක. එNevertheless, වෙනස් කිරීම කිරීමට පෙර ඔබේ දත්ත පිටපත් කර, අනුකූලතාව පරීක්ෂා කිරීම සුදුසුය.

ALTER TABLE users MODIFY id BIGINT;

7. සාරාංශය

මෙම ලිපියේ, MySQL BIGINT දත්ත වර්ගයේ ලක්ෂණ, භාවිතා කිරීමේ අවස්ථා, සහ වැදගත් සැලකිලි පිළිබඳ විස්තරාත්මකව පැහැදිළි කර ඇත.

  • BIGINT විශාල පරිමාණ දත්ත කළමනාකරණයට, විශේෂයෙන් ID කළමනාකරණය සහ උසස් නිරවද්‍ය සංඛ්‍යාත්මක සැකසීම සඳහා සුදුසුය.
  • දත්ත වර්ගයක් තෝරා ගැනීමේදී, කාර්යක්ෂමතාව සහ ප්‍රදර්ශන ශක්තිය අතර සමතුලිතතාවය රැක ගැනීමට සැලකිලිමත් දත්ත ගබඩා සැලසුම් කිරීම වැදගත් වේ.
  • AUTO_INCREMENT සහ නිසි ඉන්ඩෙක්ස් අනුකූල කිරීම භාවිතා කිරීමෙන්, ඔබට සෙවීමේ කාර්යක්ෂමතාවය සහ දත්ත කළමනාකරණ මෙහෙයුම් ගණනාවක් වැදගත් ලෙස වැඩිදියුණු කළ හැක.

මෙම අවස්ථාව භාවිතා කර MySQL BIGINT කාර්යක්ෂමව භාවිතා කර ඔබේ දත්ත ගබඩා සැලසුම සහ පද්ධති වාස්තු විද්‍යාවගේ ගුණාත්මකභාවය වැඩිදියුණු කරන්න.