SQL ಸರ್ವರ್ನಲ್ಲಿ ಮಾಸ್ಟರಿಂಗ್ ಟೇಬಲ್ ಮಾರ್ಪಾಡುಗಳು: ಒಂದು ಹಂತ-ಹಂತದ ಮಾರ್ಗದರ್ಶಿ
ಕೆಲವೊಮ್ಮೆ, ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಒಂದೇ ಬಾರಿಗೆ ನೂರು ಕಾರ್ಯಗಳನ್ನು ಕಣ್ಕಟ್ಟು ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಂತೆ ಭಾಸವಾಗುತ್ತದೆ. ಇತ್ತೀಚಿಗೆ, ಮಿಲಿಯನ್ಗಿಂತಲೂ ಹೆಚ್ಚು ಸಾಲುಗಳನ್ನು ಹೊಂದಿರುವ ಟೇಬಲ್ಗೆ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಬೇಕಾದ ಪರಿಸ್ಥಿತಿಯನ್ನು ನಾನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ. ಮೇಲ್ನೋಟಕ್ಕೆ ಇದು ಸರಳವಾದ ಕಾರ್ಯದಂತೆ ತೋರುತ್ತಿದ್ದರೂ, ಅನೇಕ SQL ಸರ್ವರ್ ಬಳಕೆದಾರರು ಎದುರಿಸುತ್ತಿರುವ ರಸ್ತೆ ತಡೆಗೆ ನಾನು ಬೇಗನೆ ಓಡಿದೆ: ಭಯಾನಕ "ಅಮಾನ್ಯ ಕಾಲಮ್ ಹೆಸರು" ದೋಷ. 🧐
ನನ್ನ ALTER TABLE ಮತ್ತು UPDATE ಕಮಾಂಡ್ಗಳನ್ನು ಒಟ್ಟಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಹಲವಾರು ಪ್ರಯತ್ನಗಳನ್ನು ನಡೆಸಿದ ನಂತರ, ಸಮಸ್ಯೆಯು ತರ್ಕದಿಂದಲ್ಲ ಆದರೆ ನನ್ನ ಪ್ರಶ್ನೆಗಳ ಅನುಕ್ರಮದಲ್ಲಿ ಎಂದು ನಾನು ಅರಿತುಕೊಂಡೆ. SQL ಸರ್ವರ್ಗೆ ನೀವು ಮೊದಲು ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ ಮತ್ತು ಯಾವುದೇ ಡೇಟಾದೊಂದಿಗೆ ಅದನ್ನು ನವೀಕರಿಸುವ ಮೊದಲು ಬದಲಾವಣೆಯನ್ನು ಮಾಡುತ್ತೀರಿ. ಹಾಗೆ ಮಾಡಲು ವಿಫಲವಾದರೆ ದೋಷ ಉಂಟಾಗುತ್ತದೆ ಏಕೆಂದರೆ ನವೀಕರಣವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದಲ್ಲಿ ಸಿಸ್ಟಂ ಹೊಸದಾಗಿ ಸೇರಿಸಲಾದ ಕಾಲಮ್ ಅನ್ನು ಗುರುತಿಸುವುದಿಲ್ಲ.
ಉದಾಹರಣೆಗೆ, ದೊಡ್ಡ ಗ್ರಾಹಕ ಡೇಟಾಬೇಸ್ಗಾಗಿ ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕದ ಮಿತಿಯ ಆಧಾರದ ಮೇಲೆ "IS_CURRENT" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ನವೀಕರಿಸುವ ಕಾರ್ಯವನ್ನು ನೀವು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಊಹಿಸಿ. ನೀವು ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಿದರೆ ಮತ್ತು ಸಾಲುಗಳನ್ನು ಒಂದೇ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ನವೀಕರಿಸಲು ಪ್ರಯತ್ನಿಸಿದರೆ, SQL ಸರ್ವರ್ "ಅಮಾನ್ಯ ಕಾಲಮ್ ಹೆಸರು" ದೋಷವನ್ನು ಎಸೆಯಬಹುದು. ಏಕೆಂದರೆ ಅಪ್ಡೇಟ್ ಪ್ರಶ್ನೆಯು ಅದನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುವ ಮೊದಲು ಕಾಲಮ್ ಸಂಪೂರ್ಣವಾಗಿ ಬದ್ಧವಾಗಿಲ್ಲ. 🚀
ಈ ಲೇಖನದಲ್ಲಿ, ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಲು ನಾವು ಸರಿಯಾದ ಅನುಕ್ರಮದ ಮೂಲಕ ನಡೆಯುತ್ತೇವೆ, ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ಸುಗಮವಾದ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ. ಲಕ್ಷಾಂತರ ಸಾಲುಗಳನ್ನು ಸಮರ್ಥವಾಗಿ ನಿರ್ವಹಿಸಲು SQL ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡಲು ನಾವು ಸಲಹೆಗಳಿಗೆ ಧುಮುಕುತ್ತೇವೆ. ನಾವು ಹಂತಗಳನ್ನು ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡುವಾಗ ಮತ್ತು ದಾರಿಯುದ್ದಕ್ಕೂ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ನಿವಾರಿಸುವಾಗ ಟ್ಯೂನ್ ಆಗಿರಿ!
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
ALTER TABLE | ಹೊಸ ಕಾಲಮ್ಗಳನ್ನು ಸೇರಿಸುವಂತಹ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಟೇಬಲ್ನ ರಚನೆಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಈ ಆಜ್ಞೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, `ALTER TABLE dbo.sample ADD IS_CURRENT BIT;` `dbo.sample` ಟೇಬಲ್ಗೆ `IS_CURRENT` ಎಂಬ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ. |
UPDATE | ಕೋಷ್ಟಕದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ದಾಖಲೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು `UPDATE` ಆಜ್ಞೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, `UPDATE dbo.sample SET IS_CURRENT = 0 WHERE LOAD_DATE |
CAST | SQL ಸರ್ವರ್ನಲ್ಲಿ, ಒಂದು ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ಇನ್ನೊಂದಕ್ಕೆ ಪರಿವರ್ತಿಸಲು `CAST` ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಯಲ್ಲಿ, `CAST(DATEADD(ತಿಂಗಳು, DATEDIFF(ತಿಂಗಳು, 0, DATEADD(DAY, -60, GETDATE())), 0) AS DATE)` ದಿನಾಂಕದ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್ ಫಲಿತಾಂಶವನ್ನು ದಿನಾಂಕ ಪ್ರಕಾರವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. |
DATEADD | ದಿನಾಂಕಕ್ಕೆ ನಿರ್ದಿಷ್ಟ ಸಮಯದ ಮಧ್ಯಂತರವನ್ನು ಸೇರಿಸಲು ಈ ಕಾರ್ಯವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, `DATEADD(DAY, -60, GETDATE())` ಪ್ರಸ್ತುತ ದಿನಾಂಕದಿಂದ 60 ದಿನಗಳನ್ನು ಕಳೆಯುತ್ತದೆ. |
DATEDIFF | `DATEDIFF` ಕಾರ್ಯವು ಎರಡು ದಿನಾಂಕಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, `DATEDIFF(ತಿಂಗಳು, 0, GETDATE())` ಮೂಲ ದಿನಾಂಕ (0, ಇದು '1900-01-01') ಮತ್ತು ಪ್ರಸ್ತುತ ದಿನಾಂಕದ ನಡುವಿನ ತಿಂಗಳುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತದೆ. |
BEGIN TRANSACTION | ಈ ಆಜ್ಞೆಯು ವಹಿವಾಟು ಬ್ಲಾಕ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಡೇಟಾ ಸಮಗ್ರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ ಬಹು SQL ಹೇಳಿಕೆಗಳನ್ನು ಒಂದೇ ಘಟಕವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಇದು ಅತ್ಯಗತ್ಯ. `ವ್ಯಾಪಾರವನ್ನು ಪ್ರಾರಂಭಿಸಿ;` ವಹಿವಾಟು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಬದ್ಧಗೊಳಿಸಬಹುದು ಅಥವಾ ಹಿಂತಿರುಗಿಸಬಹುದು. |
COMMIT TRANSACTION | ವಹಿವಾಟಿನ ಸಮಯದಲ್ಲಿ ಮಾಡಿದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಡೇಟಾಬೇಸ್ಗೆ ಉಳಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. `ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್;` `ಆರಂಭಿಕ ವಹಿವಾಟು` ಬ್ಲಾಕ್ನಲ್ಲಿ ಮಾಡಲಾದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಅಂತಿಮಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ನಿರಂತರವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
UPDATE TOP | ನವೀಕರಣದಿಂದ ಪ್ರಭಾವಿತವಾಗಿರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಲು `UPDATE` ಆಜ್ಞೆಯ ಈ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, `UPDATE TOP (10000) dbo.sample SET IS_CURRENT = 0 WHERE LOAD_DATE |
EXEC msdb.dbo.sp_add_job | ಹೊಸ ಉದ್ಯೋಗವನ್ನು ರಚಿಸಲು SQL ಸರ್ವರ್ ಏಜೆಂಟ್ನಲ್ಲಿ ಈ ಸಂಗ್ರಹಿಸಿದ ವಿಧಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. `EXEC msdb.dbo.sp_add_job @job_name = 'ಅಪ್ಡೇಟ್ IS_CURRENT ಉದ್ಯೋಗ';` ನಿರ್ದಿಷ್ಟ SQL ಆಜ್ಞೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಚಲಾಯಿಸಲು ನಿಗದಿಪಡಿಸಬಹುದಾದ ಕೆಲಸವನ್ನು ರಚಿಸುತ್ತದೆ. |
ಟೇಬಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಲು SQL ಸರ್ವರ್ ಆಜ್ಞೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
SQL ಸರ್ವರ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ಹೊಂದಿರುವ ಕೋಷ್ಟಕಗಳೊಂದಿಗೆ, ಟೇಬಲ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಅದರ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಲು ಕ್ರಮಬದ್ಧವಾದ ವಿಧಾನವನ್ನು ಅನುಸರಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಒಂದು ಸಾಮಾನ್ಯ ಸನ್ನಿವೇಶವು ಟೇಬಲ್ಗೆ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ ಮತ್ತು ನಂತರ ದಿನಾಂಕಗಳ ಆಧಾರದ ಮೇಲೆ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸುವಂತಹ ನಿರ್ದಿಷ್ಟ ಷರತ್ತುಗಳ ಆಧಾರದ ಮೇಲೆ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಬೇಕಾಗುತ್ತದೆ. ನಾನು ಒದಗಿಸಿದ ಸ್ಕ್ರಿಪ್ಟ್ ಇದಕ್ಕೆ ಸರಳವಾದ ವಿಧಾನವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ, ಆದರೆ ಈ ಕಾರ್ಯಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸಾಧಿಸಲು ಅಗತ್ಯವಾದ ಪ್ರಮುಖ SQL ಸರ್ವರ್ ಆಜ್ಞೆಗಳನ್ನು ಇದು ಹೈಲೈಟ್ ಮಾಡುತ್ತದೆ. ದಿ ಆಲ್ಟರ್ ಟೇಬಲ್ ಟೇಬಲ್ಗೆ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಲು ಆಜ್ಞೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಾವು `ALTER TABLE dbo.sample ADD IS_CURRENT BIT;` ಅನ್ನು ರನ್ ಮಾಡಿದಾಗ, `BIT` ಪ್ರಕಾರದ `IS_CURRENT` ಹೆಸರಿನ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಪರಿಚಯಿಸಲು ನಾವು ಟೇಬಲ್ ರಚನೆಯನ್ನು ಮಾರ್ಪಡಿಸುತ್ತಿದ್ದೇವೆ (ಬೂಲಿಯನ್ ಪ್ರಕಾರ, 0 ಅಥವಾ 1).
ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಿದ ನಂತರ, ಮುಂದಿನ ಹಂತವು ಕೆಲವು ಷರತ್ತುಗಳ ಆಧಾರದ ಮೇಲೆ ಕೋಷ್ಟಕದಲ್ಲಿನ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸುವುದು. ಇದನ್ನು ಬಳಸಿಕೊಂಡು ಸಾಧಿಸಲಾಗುತ್ತದೆ ನವೀಕರಿಸಿ ಆಜ್ಞೆ. ಉದಾಹರಣೆಗೆ, ಪ್ರಶ್ನೆ `UPDATE dbo.sample SET IS_CURRENT = 0 WHERE LOAD_DATE
ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ, ವಿಶೇಷವಾಗಿ ಲಕ್ಷಾಂತರ ಸಾಲುಗಳನ್ನು ಹೊಂದಿರುವ ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, SQL ಆಜ್ಞೆಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. ಈ ರೀತಿಯ ಕಾರ್ಯಗಳು ಇಲ್ಲಿವೆ DATEADD ಮತ್ತು ದಿನಾಂಕDIFF ಆಟಕ್ಕೆ ಬನ್ನಿ. ಈ ಕಾರ್ಯಗಳು ನಿಖರವಾಗಿ ದಿನಾಂಕಗಳನ್ನು ಕುಶಲತೆಯಿಂದ ಮತ್ತು ಹೋಲಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಎರಡನೇ ಅಪ್ಡೇಟ್ ಪ್ರಶ್ನೆಯಲ್ಲಿ, `DATEADD(ತಿಂಗಳು, DATEDIFF(ತಿಂಗಳು, 0, DATEADD(DAY, -60, GETDATE())), 0)` ಪ್ರಸ್ತುತ ದಿನಾಂಕದಿಂದ (`GETDATE()`) 60 ದಿನಗಳನ್ನು ಕಳೆಯುತ್ತದೆ ಮತ್ತು ಮರುಹೊಂದಿಸುತ್ತದೆ ತಿಂಗಳ ಆರಂಭದ ಸಮಯ. ಈ ಕಾರ್ಯಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ಸಮಯ ಮುಂದುವರೆದಂತೆ ಸರಿಹೊಂದಿಸುವ ಹೆಚ್ಚು ಕ್ರಿಯಾತ್ಮಕ ದಿನಾಂಕ ಶ್ರೇಣಿಗಳನ್ನು ನಾವು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಡೇಟಾವು ವಯಸ್ಸಾದಾಗಲೂ ಪ್ರಸ್ತುತವಾಗಿರುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು.
ಆದಾಗ್ಯೂ, ಒಂದೇ ಸ್ಕ್ರಿಪ್ಟ್ಗೆ `ಆಲ್ಟರ್ ಟೇಬಲ್` ಮತ್ತು `ಅಪ್ಡೇಟ್` ಎರಡೂ ಹೇಳಿಕೆಗಳನ್ನು ಸಂಯೋಜಿಸುವಾಗ, SQL ಸರ್ವರ್ ಕೆಲವೊಮ್ಮೆ "ಅಮಾನ್ಯ ಕಾಲಮ್ ಹೆಸರು" ದೋಷವನ್ನು ಎಸೆಯಬಹುದು. ಅದೇ ಬ್ಯಾಚ್ನಲ್ಲಿನ ನಂತರದ ಪ್ರಶ್ನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ `ALTER TABLE` ನಿಂದ ಸೇರಿಸಲಾದ ಕಾಲಮ್ ಅನ್ನು SQL ಸರ್ವರ್ ಸಂಪೂರ್ಣವಾಗಿ ಬದ್ಧವಾಗಿರುವುದಿಲ್ಲ ಅಥವಾ ಗುರುತಿಸದೇ ಇರಬಹುದು. ಈ ಸಮಸ್ಯೆಗೆ ಪರಿಹಾರವೆಂದರೆ `ALTER TABLE` ಹೇಳಿಕೆ ಮತ್ತು `UPDATE` ಆಜ್ಞೆಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುವುದು, ನವೀಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮೊದಲು ಟೇಬಲ್ ಬದಲಾವಣೆಯು ಸಂಪೂರ್ಣವಾಗಿ ಬದ್ಧವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು. ಹಾಗೆ ಮಾಡುವುದರಿಂದ, SQL ಸರ್ವರ್ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಅದರ ಸ್ಕೀಮಾದಲ್ಲಿ ಸರಿಯಾಗಿ ನೋಂದಾಯಿಸುತ್ತದೆ, ಇದು ಟೇಬಲ್ಗೆ ಮೃದುವಾದ ನವೀಕರಣಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ, ಈ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಬ್ಯಾಚ್ಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ ಅಥವಾ ಪ್ರಕ್ರಿಯೆಯು ಸಾಧ್ಯವಾದಷ್ಟು ಪರಿಣಾಮಕಾರಿಯಾಗಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ವಹಿವಾಟುಗಳನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ, ಸಂಭಾವ್ಯ ಸಮಯ ಮೀರುವಿಕೆಗಳು ಅಥವಾ ಲಾಕ್ಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ. 🚀
ಪರಿಹಾರ 1: ಟೇಬಲ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಲು ಪ್ರಮಾಣಿತ ವಿಧಾನ
ಈ ಪರಿಹಾರವು SQL ಸರ್ವರ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಸ್ಟುಡಿಯೋ (SSMS) ಅನ್ನು ಬಳಸುವ ಪ್ರಮಾಣಿತ ವಿಧಾನವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಅಲ್ಲಿ ನಾವು ಮೊದಲು ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುತ್ತೇವೆ ಮತ್ತು ನಂತರ ಸೂಕ್ತವಾದ ಷರತ್ತುಗಳೊಂದಿಗೆ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸುತ್ತೇವೆ. ನಾವು ALTER TABLE ಹೇಳಿಕೆಯನ್ನು ರನ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಯಾವುದೇ ನವೀಕರಣಗಳನ್ನು ಮಾಡುವ ಮೊದಲು ಅದನ್ನು ಒಪ್ಪಿಸುತ್ತೇವೆ.
ALTER TABLE dbo.sample ADD IS_CURRENT BIT;
GO
UPDATE dbo.sample
SET IS_CURRENT = 0
WHERE LOAD_DATE < '2025-01-01';
GO
UPDATE dbo.sample
SET IS_CURRENT = 0
WHERE LOAD_DATE >= CAST(DATEADD(month, DATEDIFF(month, 0, DATEADD(DAY, -60, GETDATE())), 0) AS DATE);
GO
ಪರಿಹಾರ 2: ಪರಮಾಣುತ್ವಕ್ಕಾಗಿ ವಹಿವಾಟನ್ನು ಬಳಸಿಕೊಂಡು ಆಪ್ಟಿಮೈಸ್ಡ್ ಅಪ್ರೋಚ್
ಈ ಪರಿಹಾರವು ಟೇಬಲ್ ಮಾರ್ಪಾಡು ಮತ್ತು ಸಾಲು ನವೀಕರಣಗಳನ್ನು ಪರಮಾಣುವಾಗಿ ಮಾಡಲಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ವಹಿವಾಟಿನಲ್ಲಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಸುತ್ತುವ ಮೂಲಕ, ವೈಫಲ್ಯದ ಸಂದರ್ಭದಲ್ಲಿ ನಾವು ಸ್ಥಿರತೆ ಮತ್ತು ರೋಲ್ಬ್ಯಾಕ್ ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ.
BEGIN TRANSACTION;
ALTER TABLE dbo.sample ADD IS_CURRENT BIT;
UPDATE dbo.sample
SET IS_CURRENT = 0
WHERE LOAD_DATE < '2025-01-01';
UPDATE dbo.sample
SET IS_CURRENT = 0
WHERE LOAD_DATE >= CAST(DATEADD(month, DATEDIFF(month, 0, DATEADD(DAY, -60, GETDATE())), 0) AS DATE);
COMMIT TRANSACTION;
ಪರಿಹಾರ 3: ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳಿಗಾಗಿ ಬ್ಯಾಚ್ ಪ್ರೊಸೆಸಿಂಗ್ ಅನ್ನು ಬಳಸುವ ವಿಧಾನ
ಮಿಲಿಯನ್ಗಿಂತಲೂ ಹೆಚ್ಚು ಸಾಲುಗಳನ್ನು ಹೊಂದಿರುವ ಕೋಷ್ಟಕಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, ಲಾಕಿಂಗ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು ಮತ್ತು ವಹಿವಾಟಿನ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು ಅತ್ಯಗತ್ಯ. ಈ ಪರಿಹಾರವು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ಸಮಯ ಮೀರುವುದನ್ನು ತಡೆಯಲು ಸಣ್ಣ ಬ್ಯಾಚ್ಗಳಲ್ಲಿ ನವೀಕರಣಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ.
DECLARE @BatchSize INT = 10000;
DECLARE @RowCount INT;
SELECT @RowCount = COUNT(*) FROM dbo.sample WHERE IS_CURRENT IS ;
WHILE @RowCount > 0
BEGIN
UPDATE TOP (@BatchSize) dbo.sample
SET IS_CURRENT = 0
WHERE LOAD_DATE < '2025-01-01' AND IS_CURRENT IS ;
SET @RowCount = @RowCount - @BatchSize;
END
ಪರಿಹಾರ 4: ಕಾರ್ಯಕ್ಷಮತೆ ಸುಧಾರಣೆಗಾಗಿ ಸೂಚ್ಯಂಕ ವೀಕ್ಷಣೆಗಳ ಬಳಕೆ
ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ಪ್ರಶ್ನಿಸುವಾಗ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು, ನೀವು SQL ಸರ್ವರ್ನಲ್ಲಿ ಸೂಚ್ಯಂಕ ವೀಕ್ಷಣೆಗಳನ್ನು ರಚಿಸಬಹುದು. ಈ ವಿಧಾನವು ಸಂಕೀರ್ಣವಾದ ಪ್ರಶ್ನೆಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ವಸ್ತುರೂಪದ ವೀಕ್ಷಣೆಗಳನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ, ಪುನರಾವರ್ತಿತ ಡೇಟಾ ಸಂಸ್ಕರಣೆಯ ಅಗತ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
CREATE VIEW dbo.Sample_View AS
SELECT LOAD_DATE, IS_CURRENT
FROM dbo.sample
WHERE LOAD_DATE < '2025-01-01';
GO
CREATE UNIQUE CLUSTERED INDEX idx_sample_view ON dbo.Sample_View (LOAD_DATE);
GO
UPDATE dbo.sample
SET IS_CURRENT = 0
FROM dbo.Sample_View v
WHERE dbo.sample.LOAD_DATE = v.LOAD_DATE;
GO
ಪರಿಹಾರ 5: ನಿಗದಿತ ನವೀಕರಣಗಳಿಗಾಗಿ SQL ಸರ್ವರ್ ಏಜೆಂಟ್ ಉದ್ಯೋಗಗಳೊಂದಿಗೆ ಅಪ್ರೋಚ್
ನಿಗದಿತ ಆಧಾರದ ಮೇಲೆ ನೀವು ಟೇಬಲ್ ಅನ್ನು ನವೀಕರಿಸಬೇಕಾದರೆ, SQL ಸರ್ವರ್ ಏಜೆಂಟ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರಗಳಲ್ಲಿ ಅಪ್ಡೇಟ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಉದ್ಯೋಗಗಳನ್ನು ರಚಿಸಲು ಬಳಸಬಹುದು, ಹಸ್ತಚಾಲಿತ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಅಗತ್ಯವನ್ನು ತಪ್ಪಿಸುತ್ತದೆ.
EXEC msdb.dbo.sp_add_job @job_name = 'Update IS_CURRENT Job';
EXEC msdb.dbo.sp_add_jobstep @job_name = 'Update IS_CURRENT Job',
@step_name = 'Update IS_CURRENT Step',
@subsystem = 'TSQL',
@command = 'UPDATE dbo.sample SET IS_CURRENT = 0 WHERE LOAD_DATE < ''2025-01-01'';',
@retry_attempts = 5, @retry_interval = 5;
EXEC msdb.dbo.sp_add_schedule @schedule_name = 'Daily Schedule',
@enabled = 1, @freq_type = 4, @freq_interval = 1, @active_start_time = 010000;
EXEC msdb.dbo.sp_attach_schedule @job_name = 'Update IS_CURRENT Job', @schedule_name = 'Daily Schedule';
EXEC msdb.dbo.sp_start_job @job_name = 'Update IS_CURRENT Job';
ಸ್ಕ್ರಿಪ್ಟ್ಗಳಲ್ಲಿ ಬಳಸಲಾದ ನಿರ್ದಿಷ್ಟ SQL ಆದೇಶಗಳ ವಿವರಣೆ
ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳಿಗಾಗಿ SQL ಸರ್ವರ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸಲಾಗುತ್ತಿದೆ
SQL ಸರ್ವರ್ನಲ್ಲಿ ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಟೇಬಲ್ ರಚನೆಯನ್ನು ಬದಲಾಯಿಸುವಾಗ ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸುವಾಗ ಕಾರ್ಯಕ್ಷಮತೆ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳನ್ನು ಪರಿಗಣಿಸುವುದು ಮುಖ್ಯವಾಗಿದೆ. ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ ಎದುರಿಸುವ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳೆಂದರೆ, ಈ ಕಾರ್ಯಾಚರಣೆಗಳು ಪೂರ್ಣಗೊಳ್ಳಲು ತೆಗೆದುಕೊಳ್ಳುವ ಸಮಯ, ವಿಶೇಷವಾಗಿ ಟೇಬಲ್ ಮಿಲಿಯನ್ಗಿಂತಲೂ ಹೆಚ್ಚು ಸಾಲುಗಳನ್ನು ಹೊಂದಿರುವಾಗ. ಪ್ರಶ್ನೆಯಲ್ಲಿರುವ ಕಾರ್ಯಾಚರಣೆಗಳು, ಉದಾಹರಣೆಗೆ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುವುದು ಆಲ್ಟರ್ ಟೇಬಲ್ ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕದ ಪರಿಸ್ಥಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ಸಾಲುಗಳನ್ನು ಕಮಾಂಡ್ ಮಾಡುವುದು ಮತ್ತು ನವೀಕರಿಸುವುದು, ಗಮನಾರ್ಹ ಸಮಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಕಾರ್ಯಕ್ಷಮತೆಯು ಆದ್ಯತೆಯಿರುವ ಉತ್ಪಾದನಾ ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ ನೀವು ಕೆಲಸ ಮಾಡುತ್ತಿರುವಾಗ ಈ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು ಇನ್ನಷ್ಟು ಮುಖ್ಯವಾಗುತ್ತದೆ. ಒಂದೇ ಸ್ಕ್ರಿಪ್ಟ್ ಟೇಬಲ್ ಅನ್ನು ದೀರ್ಘಾವಧಿಯವರೆಗೆ ಲಾಕ್ ಮಾಡಬಹುದು, ಇದು ಇತರ ಪ್ರಶ್ನೆಗಳು ಮತ್ತು ಬಳಕೆದಾರರ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ.
ಕಾರ್ಯಕ್ಷಮತೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ತಗ್ಗಿಸಲು, ಕಾರ್ಯಗಳನ್ನು ಸಣ್ಣ ಹಂತಗಳಾಗಿ ವಿಭಜಿಸುವುದು ಉತ್ತಮ ವಿಧಾನಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುವ ಮತ್ತು ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಒಂದೇ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ನವೀಕರಿಸುವ ಬದಲು, ರನ್ನಿಂಗ್ ಅನ್ನು ಪರಿಗಣಿಸಿ ಆಲ್ಟರ್ ಟೇಬಲ್ ಪ್ರತ್ಯೇಕವಾಗಿ ಕಮಾಂಡ್ ಮಾಡಿ, ಬ್ಯಾಚ್ ಮಾಡುವ ಮೂಲಕ UPDATE ಕಾರ್ಯಾಚರಣೆಗಳು. ಸಣ್ಣ ಭಾಗಗಳಲ್ಲಿ ದಾಖಲೆಗಳನ್ನು ನವೀಕರಿಸುವ ಮೂಲಕ, ಸ್ಕ್ರಿಪ್ಟ್ ಸರ್ವರ್ ಅನ್ನು ಅತಿಕ್ರಮಿಸುವುದಿಲ್ಲ. ನೀವು ಹತೋಟಿ ಮಾಡಬಹುದು UPDATE TOP ಪ್ರತಿ ವಹಿವಾಟಿನಲ್ಲಿ ಪರಿಣಾಮ ಬೀರುವ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಲು ಆಜ್ಞೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಿಮ್ಮಲ್ಲಿ ಬಳಸಿದ ಕಾಲಮ್ಗಳಲ್ಲಿ ಸೂಚಿಕೆಗಳನ್ನು ರಚಿಸುವುದು ಸಹ ಒಳ್ಳೆಯದು WHERE ಷರತ್ತುಗಳು (ಉದಾಹರಣೆಗೆ LOAD_DATE) ಹುಡುಕಾಟ ಪ್ರಕ್ರಿಯೆಯನ್ನು ವೇಗಗೊಳಿಸಲು. ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳಿಗಾಗಿ, ದಿನಾಂಕ ಶ್ರೇಣಿಗಳ ಆಧಾರದ ಮೇಲೆ ಸಾಲುಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ತೆಗೆದುಕೊಳ್ಳುವ ಸಮಯವನ್ನು ಸೂಚ್ಯಂಕಗಳು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಪರಮಾಣುವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ವಹಿವಾಟುಗಳ ಬಳಕೆ ಮತ್ತು ದೋಷ ನಿರ್ವಹಣೆ ಮತ್ತೊಂದು ಪ್ರಮುಖ ಪರಿಗಣನೆಯಾಗಿದೆ. ನಿಮ್ಮ ಸುತ್ತುವ ಮೂಲಕ UPDATE ಎ ಒಳಗೆ ಹೇಳಿಕೆಗಳು BEGIN TRANSACTION ಮತ್ತು COMMIT, ಬದಲಾವಣೆಗಳನ್ನು ಸುರಕ್ಷಿತ ಮತ್ತು ಸ್ಥಿರ ರೀತಿಯಲ್ಲಿ ಮಾಡಲಾಗಿದೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸುತ್ತೀರಿ. ಪ್ರಕ್ರಿಯೆಯ ಯಾವುದೇ ಭಾಗವು ವಿಫಲವಾದರೆ, ನೀವು ಬಳಸಬಹುದು ROLLBACK ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲು, ಭಾಗಶಃ ನವೀಕರಣಗಳನ್ನು ತಡೆಯುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಆಫ್-ಪೀಕ್ ಸಮಯದಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಚಲಾಯಿಸುವುದು ಅಥವಾ ಈ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು SQL ಸರ್ವರ್ ಏಜೆಂಟ್ ಅನ್ನು ಬಳಸುವುದು ಸಿಸ್ಟಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಕನಿಷ್ಠ ಪರಿಣಾಮವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳೊಂದಿಗೆ, ಸಿಸ್ಟಮ್ ಸಮಗ್ರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವಾಗ ನೀವು ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳಲ್ಲಿ ಸಂಕೀರ್ಣ ಮಾರ್ಪಾಡುಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. 🖥️
SQL ಸರ್ವರ್ ಟೇಬಲ್ ಮಾರ್ಪಾಡುಗಳ ಬಗ್ಗೆ ಪದೇ ಪದೇ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು
- SQL ಸರ್ವರ್ನಲ್ಲಿ ಟೇಬಲ್ಗೆ ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಹೇಗೆ ಸೇರಿಸುವುದು?
- ಬಳಸಿ ನೀವು ಹೊಸ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಬಹುದು ALTER TABLE ಆಜ್ಞೆ. ಉದಾಹರಣೆಗೆ: ALTER TABLE dbo.sample ADD IS_CURRENT BIT; BIT ಯ ಡೇಟಾ ಪ್ರಕಾರದೊಂದಿಗೆ IS_CURRENT ಹೆಸರಿನ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ.
- SQL ಸರ್ವರ್ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಶ್ರೇಣಿಯ ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ನಾನು ಹೇಗೆ ನವೀಕರಿಸಬಹುದು?
- ಬಳಸಿ UPDATE a ಜೊತೆಗೆ ಆಜ್ಞೆ WHERE ಸಾಲುಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ಷರತ್ತು. ಉದಾಹರಣೆಗೆ: UPDATE dbo.sample SET IS_CURRENT = 0 WHERE LOAD_DATE
- ನನ್ನ ಸ್ಕ್ರಿಪ್ಟ್ "ಅಮಾನ್ಯ ಕಾಲಮ್ ಹೆಸರು" ದೋಷವನ್ನು ಏಕೆ ಎಸೆಯುತ್ತದೆ?
- ಒಂದು ವೇಳೆ ಈ ದೋಷ ಸಂಭವಿಸುತ್ತದೆ ALTER TABLE ಚಾಲನೆ ಮಾಡುವ ಮೊದಲು ಆಜ್ಞೆಯು ಸಂಪೂರ್ಣವಾಗಿ ಬದ್ಧವಾಗಿಲ್ಲ UPDATE ಹೇಳಿಕೆ. ಇದನ್ನು ತಪ್ಪಿಸಲು, ರನ್ ಮಾಡಿ ALTER TABLE ಮೊದಲು ಆಜ್ಞೆ ಮಾಡಿ, ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಲು ನಿರೀಕ್ಷಿಸಿ, ನಂತರ ಕಾರ್ಯಗತಗೊಳಿಸಿ UPDATE ಪ್ರತ್ಯೇಕವಾಗಿ ಪ್ರಶ್ನೆಗಳು.
- ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ನಾನು ಬ್ಯಾಚ್ಗಳಲ್ಲಿ ಸಾಲುಗಳನ್ನು ಹೇಗೆ ನವೀಕರಿಸಬಹುದು?
- ಬಳಸಿ UPDATE TOP ಒಮ್ಮೆ ನವೀಕರಿಸಿದ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಲು ಆಜ್ಞೆ. ಉದಾಹರಣೆಗೆ: UPDATE TOP (1000) dbo.sample SET IS_CURRENT = 0 WHERE LOAD_DATE
- ಪರಮಾಣು ನವೀಕರಣಗಳನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಾನು ವಹಿವಾಟನ್ನು ಬಳಸಬಹುದೇ?
- ಹೌದು! ನಿಮ್ಮ ಸುತ್ತು UPDATE a ನಲ್ಲಿ ಹೇಳಿಕೆಗಳು BEGIN TRANSACTION ಮತ್ತು COMMIT ಎಲ್ಲಾ ನವೀಕರಣಗಳನ್ನು ಒಂದೇ ಘಟಕವಾಗಿ ಅನ್ವಯಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿರ್ಬಂಧಿಸಿ. ಯಾವುದೇ ದೋಷಗಳು ಸಂಭವಿಸಿದಲ್ಲಿ, ಬಳಸಿ ROLLBACK ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸಲು.
- SQL ಸರ್ವರ್ನಲ್ಲಿ ದೊಡ್ಡ ನವೀಕರಣಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಉತ್ತಮ ಮಾರ್ಗ ಯಾವುದು?
- ನವೀಕರಣವನ್ನು ಸಣ್ಣ ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸುವುದು, ಸಂಬಂಧಿತ ಕಾಲಮ್ಗಳಲ್ಲಿ ಸೂಚ್ಯಂಕಗಳನ್ನು ರಚಿಸುವುದು ಮತ್ತು ಆಫ್-ಪೀಕ್ ಸಮಯದಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಬಳಸಿ UPDATE TOP ವಿಧಾನವು ಲಾಕ್ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸಂಪನ್ಮೂಲ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
- SQL ಸರ್ವರ್ನಲ್ಲಿ ದಿನಾಂಕ ಹೋಲಿಕೆಗಳನ್ನು ನಾನು ಹೇಗೆ ಹೆಚ್ಚು ಕ್ರಿಯಾತ್ಮಕಗೊಳಿಸಬಹುದು?
- ದಿನಾಂಕ ಕಾರ್ಯಗಳನ್ನು ಬಳಸಿ DATEADD ಮತ್ತು DATEDIFF ಡೈನಾಮಿಕ್ ದಿನಾಂಕ ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ನಿರ್ವಹಿಸಲು. ಉದಾಹರಣೆಗೆ, 60 ದಿನಗಳ ಹಿಂದಿನ ದಿನಾಂಕವನ್ನು ಹೊಂದಿಸಲು, DATEADD(DAY, -60, GETDATE()) ಅನ್ನು ಬಳಸಿ.
- ದಿನಾಂಕದ ಆಧಾರದ ಮೇಲೆ ಲಕ್ಷಾಂತರ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಬೇಕಾದರೆ ನಾನು ಏನು ಮಾಡಬೇಕು?
- ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಸೂಚ್ಯಂಕಿತ ಕಾಲಮ್ಗಳನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಿಮ್ಮ ನವೀಕರಣವನ್ನು ಸಣ್ಣ ವಹಿವಾಟುಗಳಾಗಿ ವಿಭಜಿಸಿ ಮತ್ತು ಬಳಸಿ UPDATE TOP ಬ್ಯಾಚ್ಗಳಲ್ಲಿ ಸಾಲುಗಳನ್ನು ನವೀಕರಿಸಲು.
- ದೊಡ್ಡ ಟೇಬಲ್ ಅನ್ನು ನವೀಕರಿಸುವಾಗ ಲಾಕ್ ಮಾಡುವ ಸಮಸ್ಯೆಗಳನ್ನು ನಾನು ಹೇಗೆ ತಪ್ಪಿಸಬಹುದು?
- ಲಾಕ್ ಸಮಸ್ಯೆಗಳನ್ನು ತಡೆಗಟ್ಟಲು, ನವೀಕರಣಗಳನ್ನು ಸಣ್ಣ ಬ್ಯಾಚ್ಗಳಾಗಿ ವಿಭಜಿಸಲು ಪ್ರಯತ್ನಿಸಿ, ಹಂತಗಳಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ವಹಿವಾಟುಗಳನ್ನು ಬಳಸಿ ಮತ್ತು ಕಡಿಮೆ ಬಳಕೆಯ ಸಮಯದಲ್ಲಿ ನವೀಕರಣವನ್ನು ಚಾಲನೆ ಮಾಡಲು ಪರಿಗಣಿಸಿ.
- ನಾನು SQL ಸರ್ವರ್ನಲ್ಲಿ ದೊಡ್ಡ ನವೀಕರಣ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ನಿಗದಿಪಡಿಸಬಹುದೇ?
- ಹೌದು, ಸಿಸ್ಟಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲಿನ ಪರಿಣಾಮವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಆಫ್-ಪೀಕ್ ಸಮಯದಲ್ಲಿ ದೊಡ್ಡ ನವೀಕರಣ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು SQL ಸರ್ವರ್ ಏಜೆಂಟ್ ಅನ್ನು ಬಳಸಬಹುದು. SQL ಸರ್ವರ್ ಏಜೆಂಟ್ನಲ್ಲಿ ಉದ್ಯೋಗವನ್ನು ರಚಿಸಿ ಮತ್ತು ಬಯಸಿದ ವೇಳಾಪಟ್ಟಿಯನ್ನು ಹೊಂದಿಸಿ.
SQL ಸರ್ವರ್ನಲ್ಲಿ ದೊಡ್ಡ ಟೇಬಲ್ ಮಾರ್ಪಾಡುಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು
ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು SQL ಸರ್ವರ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ನಿಮ್ಮ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒಡೆಯುವುದು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಪ್ರಮುಖವಾಗಿದೆ. ಲಕ್ಷಾಂತರ ಸಾಲುಗಳನ್ನು ಹೊಂದಿರುವ ಟೇಬಲ್ಗೆ ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸುವುದು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಷರತ್ತುಗಳ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾವನ್ನು ನವೀಕರಿಸುವುದು ಒಂದು ಸವಾಲಾಗಿದೆ. ಇದಕ್ಕೆ ಕಮಾಂಡ್ಗಳ ಕಾರ್ಯತಂತ್ರದ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವಿದೆ ಆಲ್ಟರ್ ಟೇಬಲ್ ಮತ್ತು UPDATE ಸಿಸ್ಟಮ್ ಅನ್ನು ಅಗಾಧಗೊಳಿಸದೆ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು.
ಹೆಚ್ಚುವರಿಯಾಗಿ, ಬ್ಯಾಚಿಂಗ್ ಅಪ್ಡೇಟ್ಗಳು, ಇಂಡೆಕ್ಸಿಂಗ್ ಅನ್ನು ಬಳಸುವುದು ಮತ್ತು ಆಫ್-ಪೀಕ್ ಸಮಯದಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವಂತಹ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅಳವಡಿಸುವುದು ಟೇಬಲ್ ಲಾಕ್ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ಕುಸಿತದಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ತಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲಸದ ಹೊರೆಯನ್ನು ವಿಭಜಿಸುವ ಮೂಲಕ ಮತ್ತು ಪ್ರಶ್ನೆಗಳನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವ ಮೂಲಕ, ಅಲಭ್ಯತೆಯನ್ನು ಅಥವಾ "ಅಮಾನ್ಯ ಕಾಲಮ್ ಹೆಸರು" ನಂತಹ ದೋಷಗಳನ್ನು ಉಂಟುಮಾಡದೆ ನೀವು ಸುರಕ್ಷಿತವಾಗಿ ದೊಡ್ಡ ಪ್ರಮಾಣದ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬಹುದು. 💻
ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಮೂಲಗಳು
- SQL ಸರ್ವರ್ನಲ್ಲಿ ಕೋಷ್ಟಕಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮತ್ತು ಡೇಟಾವನ್ನು ನವೀಕರಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ. ಕೋಷ್ಟಕಗಳನ್ನು ಬದಲಾಯಿಸುವುದು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನೋಡಿ ಮೈಕ್ರೋಸಾಫ್ಟ್ SQL ಸರ್ವರ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
- ದೊಡ್ಡ ಕೋಷ್ಟಕಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು SQL ಆಜ್ಞೆಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು, ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ SQL ಶಾಕ್ .
- SQL ನಲ್ಲಿ ದಿನಾಂಕ-ಆಧಾರಿತ ಷರತ್ತುಬದ್ಧ ನವೀಕರಣಗಳು ಮತ್ತು ಸೂಚಿಕೆಗಳ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ, ಇಲ್ಲಿ ಲಭ್ಯವಿದೆ SQL ಸರ್ವರ್ ಸೆಂಟ್ರಲ್ .