Skip to content

Commit

Permalink
Pipelines-Bot: Updated site via c59cb4995cd5d83d8df5cbaa05baafcac57cad7b
Browse files Browse the repository at this point in the history
  • Loading branch information
roeb committed Mar 25, 2020
1 parent b746d7f commit 4caae9b
Show file tree
Hide file tree
Showing 17 changed files with 3,327 additions and 76 deletions.
6 changes: 3 additions & 3 deletions about.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@
<meta property="og:locale" content="en_US" />
<meta name="description" content="Trainer for Mircosoft Azure and Identity/Security. Development from Cloud and Web Solutions." />
<meta property="og:description" content="Trainer for Mircosoft Azure and Identity/Security. Development from Cloud and Web Solutions." />
<link rel="canonical" href="meyer-consulting.net/about.html" />
<meta property="og:url" content="meyer-consulting.net/about.html" />
<link rel="canonical" href="https://meyer-consulting.net/about.html" />
<meta property="og:url" content="https://meyer-consulting.net/about.html" />
<meta property="og:site_name" content="Robert Meyer Consulting" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="about" />
<meta name="twitter:site" content="@roeb" />
<meta name="twitter:creator" content="@roeb" />
<script type="application/ld+json">
{"description":"Trainer for Mircosoft Azure and Identity/Security. Development from Cloud and Web Solutions.","@type":"WebPage","url":"meyer-consulting.net/about.html","headline":"about","@context":"https://schema.org"}</script>
{"description":"Trainer for Mircosoft Azure and Identity/Security. Development from Cloud and Web Solutions.","@type":"WebPage","url":"https://meyer-consulting.net/about.html","headline":"about","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->


Expand Down
96 changes: 48 additions & 48 deletions blog.html

Large diffs are not rendered by default.

303 changes: 303 additions & 0 deletions blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,303 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<title>Robert Meyer Consulting</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="shortcut icon" type="image/x-icon" href="/Logo.ico">

<!-- Template Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Poppins:400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" rel="stylesheet">

<!-- Template CSS Files -->
<link type="text/css" media="all" href="/assets/css/bootstrap.min.css" rel="stylesheet">
<link type="text/css" media="all" href="/assets/css/jquery.animatedheadline.css" rel="stylesheet">
<link type="text/css" media="all" href="/assets/css/font-awesome.min.css" rel="stylesheet">
<link type="text/css" media="all" href="/assets/css/style.css" rel="stylesheet">
<link type="text/css" media="all" href="/assets/css/skins/goldrenrod.css" rel="stylesheet">
<link type="text/css" media="all" href="/assets/css/rougify-github.css" rel="stylesheet">

<!-- Template JS Files -->
<script src="/assets/js/modernizr.js"></script>

<!-- Begin Jekyll SEO tag v2.6.1 -->
<title>Update auf große Datenmengen mit @@ROWCOUNT | Robert Meyer Consulting</title>
<meta name="generator" content="Jekyll v4.0.0" />
<meta property="og:title" content="Update auf große Datenmengen mit @@ROWCOUNT" />
<meta name="author" content="Robert Meyer" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Häufig steht man vor der Herausforderung in einer sehr großen Tabelle Datensätze zu aktualisieren. Hat diese z.B. wie in meinem Szenario über 10 Millionen Datensätze und einen Trigger der auf Update Commands reagiert, ist es nicht sehr sinnvoll mit einem mal mehr als 1000 Zeilen zu aktualisieren. Hierbei kann es zu ungewollten Table Locks kommen. Noch problematischer wird es, wenn während des Zeitpunktes des Updates viele Abfragen auf dieser Tabelle ausgeführt werden." />
<meta property="og:description" content="Häufig steht man vor der Herausforderung in einer sehr großen Tabelle Datensätze zu aktualisieren. Hat diese z.B. wie in meinem Szenario über 10 Millionen Datensätze und einen Trigger der auf Update Commands reagiert, ist es nicht sehr sinnvoll mit einem mal mehr als 1000 Zeilen zu aktualisieren. Hierbei kann es zu ungewollten Table Locks kommen. Noch problematischer wird es, wenn während des Zeitpunktes des Updates viele Abfragen auf dieser Tabelle ausgeführt werden." />
<link rel="canonical" href="https://meyer-consulting.net/blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/" />
<meta property="og:url" content="https://meyer-consulting.net/blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/" />
<meta property="og:site_name" content="Robert Meyer Consulting" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2012-07-11T03:38:31-05:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Update auf große Datenmengen mit @@ROWCOUNT" />
<meta name="twitter:site" content="@roeb" />
<meta name="twitter:creator" content="@Robert Meyer" />
<script type="application/ld+json">
{"author":{"@type":"Person","name":"Robert Meyer"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://meyer-consulting.net/blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/"},"description":"Häufig steht man vor der Herausforderung in einer sehr großen Tabelle Datensätze zu aktualisieren. Hat diese z.B. wie in meinem Szenario über 10 Millionen Datensätze und einen Trigger der auf Update Commands reagiert, ist es nicht sehr sinnvoll mit einem mal mehr als 1000 Zeilen zu aktualisieren. Hierbei kann es zu ungewollten Table Locks kommen. Noch problematischer wird es, wenn während des Zeitpunktes des Updates viele Abfragen auf dieser Tabelle ausgeführt werden.","@type":"BlogPosting","url":"https://meyer-consulting.net/blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/","headline":"Update auf große Datenmengen mit @@ROWCOUNT","dateModified":"2012-07-11T03:38:31-05:00","datePublished":"2012-07-11T03:38:31-05:00","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->


<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-160199639-1', 'auto');
ga('send', 'pageview', { 'page': location.pathname + location.search + location.hash});
ga('set', 'anonymizeIp', false);
</script>
<!-- End Google Analytics -->
</head>

<body class="dark fullscreendark">
<div class="page">
<div class="stretchy-nav-background"></div>
<!-- Header Starts -->
<header id="header">
<!-- Stretchy Navigation Starts -->
<div class="cd-stretchy-nav">
<a class="cd-nav-trigger" href="#0">
<span aria-hidden="true"></span>
</a>
<ul class="stretchy-nav">

<li ><a href="/"><span>Home</span></a></li>

<li ><a href="/about"><span>About</span></a></li>

<li ><a href="/services"><span>My Services</span></a></li>

<li ><a href="/blog"><span>Blog</span></a></li>

<li ><a href="/contact"><span>Contact</span></a></li>

</ul>
<span aria-hidden="true" class="stretchy-nav-bg"></span>
</div>
<!-- Stretchy Navigation Ends -->
</header>
<!-- Header Ends -->
<!-- Main Content Starts -->
<main id="main">
<span class="back-mobile" id="back-mobile"><i class="fa fa-arrow-left"></i></span>

<!-- <h1>Update auf große Datenmengen mit @@ROWCOUNT</h1>
<p>11 Jul 2012 - Robert Meyer</p>
<p>Häufig steht man vor der Herausforderung in einer sehr großen Tabelle Datensätze zu aktualisieren. Hat diese z.B. wie in meinem Szenario über 10 Millionen Datensätze und einen Trigger der auf Update Commands reagiert, ist es nicht sehr sinnvoll mit einem mal mehr als 1000 Zeilen zu aktualisieren.
Hierbei kann es zu ungewollten Table Locks kommen. Noch problematischer wird es, wenn während des Zeitpunktes des Updates viele Abfragen auf dieser Tabelle ausgeführt werden.</p>
<p>Der erste Lösungsansatz bei diesem Problem ist ein eingeschränkter Update Befehl auf 1000 Zeilen. Diese kann man mit einem UPDATE TOP (1000) und ebenso mit dem Befehl SET ROWCOUNT 1000 erreichen (Siehe Beispiele).</p>
<p><img src="/assets/img/blog/2012/row_count_1.png" alt="" /></p>
<p>Möchte man nun etwa 100000 Zeilen aktualisieren empfiehlt es sich hierfür eine Schleife zu bauen. Außerdem sollte nach jedem Updatebefehl eine Wartezeit von 1-3 Sekunden eingefügt werden, damit andere Anfragen die Möglichkeit haben Sperren zu setzen. Dies erreicht man durch den Befehl WAITFOR DELAY. Hier ein Beispiel:</p>
<p><img src="/assets/img/blog/2012/row_count_2.png" alt="" /></p>
<p>Der gesamte Updatevorgang kann dadurch etwas länger dauern, man minimiert jedoch die Wahrscheinlichkeit von Locks über die ganze Tabelle und erlaubt z.B. Triggern optimaler zu arbeiten.</p>
-->
<div class="dark blog wrapper">
<div class="container-fluid page-title post-title">
<div class="content-banner">
<h2 class="text-center">
<span>Update auf große Datenmengen mit @@ROWCOUNT</span>
</h2>
<div class="meta">
<span><i class="fa fa-user"></i> <a href="#">Robert Meyer</a></span>
<span class="date"><i class="fa fa-calendar"></i>11 Jul 2012</span>
<!-- <span><i class="fa fa-commenting"></i> <a href="blog-post.html">18</a></span> -->
<span><i class="fa fa-tags"></i>

<span>ROWCOUNT</span>

<span>UPDATE</span>

<span>WAITFOR DELAY</span>

</span>
<span class="permalink"><i class="fa fa-link"></i> <a href="/blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/">permalink</a></span>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="content">
<!-- Article Starts -->
<article>
<!-- Excerpt Starts -->
<div class="blog-excerpt post">
<p>Häufig steht man vor der Herausforderung in einer sehr großen Tabelle Datensätze zu aktualisieren. Hat diese z.B. wie in meinem Szenario über 10 Millionen Datensätze und einen Trigger der auf Update Commands reagiert, ist es nicht sehr sinnvoll mit einem mal mehr als 1000 Zeilen zu aktualisieren.
Hierbei kann es zu ungewollten Table Locks kommen. Noch problematischer wird es, wenn während des Zeitpunktes des Updates viele Abfragen auf dieser Tabelle ausgeführt werden.</p>

<p>Der erste Lösungsansatz bei diesem Problem ist ein eingeschränkter Update Befehl auf 1000 Zeilen. Diese kann man mit einem UPDATE TOP (1000) und ebenso mit dem Befehl SET ROWCOUNT 1000 erreichen (Siehe Beispiele).</p>

<p><img src="/assets/img/blog/2012/row_count_1.png" alt="" /></p>

<p>Möchte man nun etwa 100000 Zeilen aktualisieren empfiehlt es sich hierfür eine Schleife zu bauen. Außerdem sollte nach jedem Updatebefehl eine Wartezeit von 1-3 Sekunden eingefügt werden, damit andere Anfragen die Möglichkeit haben Sperren zu setzen. Dies erreicht man durch den Befehl WAITFOR DELAY. Hier ein Beispiel:</p>

<p><img src="/assets/img/blog/2012/row_count_2.png" alt="" /></p>

<p>Der gesamte Updatevorgang kann dadurch etwas länger dauern, man minimiert jedoch die Wahrscheinlichkeit von Locks über die ganze Tabelle und erlaubt z.B. Triggern optimaler zu arbeiten.</p>

<!-- Meta Starts -->
<!-- <div class="meta meta-post-content">
<span><i class="fa fa-user"></i> <a href="#">admin</a></span>
<span class="date"><i class="fa fa-calendar"></i> 9 January 2017</span>
<span><i class="fa fa-commenting"></i> <a href="blog-post.html">18</a></span>
<span><i class="fa fa-tags"></i> js, php, html</span>
<span class="permalink"><i class="fa fa-link"></i> <a href="/blog/2012/07/11/update-auf-groe-datenmengen-mit-rowcount/">permalink</a></span>
</div> -->
<!-- Meta Ends -->
</div>
<!-- Excerpt Ends -->
<!-- Comments Starts -->
</article>
<!-- Article Ends -->
</div>
</div>
</div>
</div>
</main>
<footer id="footer">
<style>
#cookie-notice {
width: 100vw;
background: #ccc;
padding: 0.5rem 1rem;
display: none;
text-align: center;
}

#cookie-notice span {
color: #000;
}

#cookie-notice a {
display: inline-block;
cursor: pointer;
margin-left: 0.5rem;
color: #fff;
}

#cookie-notice a span {
color: #fff;
}

#cookie-notice a:hover span {
color: #fff;
}

@media (max-width: 767px) {
#cookie-notice span {
display: block;
padding-top: 3px;
margin-bottom: 1rem;
}

#cookie-notice a {
position: relative;
bottom: 4px;
}
}
</style>
<div id="cookie-notice">
<span>We would like to use third party cookies and scripts to improve the functionality of this website.</span>
<a id="cookie-notice-accept" class="btn">
<span>Approve</span>
</a>
<a href="/privacy" class="btn">
<span>
More info
</span>
</a>
</div>
<script>
function createCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}

if (readCookie('cookie-notice-dismissed') == 'true') {
// Load Google Analytics here
} else {
document.getElementById('cookie-notice').style.display = 'block';
}
document.getElementById('cookie-notice-accept').addEventListener("click", function () {
createCookie('cookie-notice-dismissed', 'true', 31);
document.getElementById('cookie-notice').style.display = 'none';
location.reload();
});

</script>
<div class="social-media">
<a href="https://twitter.com/roeb" target="_blank">
<div class="social-icon twitter"></div>
</a>
<a href="https://github.com/roeb" target="_blank">
<div class="social-icon github"></div>
</a>
<a href="https://www.linkedin.com/in/robert-meyer-332b2b28/" target="_blank">
<div class="social-icon linkedin"></div>
</a>
<a href="https://www.xing.com/profile/Robert_Meyer10" target="_blank">
<div class="social-icon xing"></div>
</a>
<a href="https://keybase.io/roeb/" target="_blank">
<div class="social-icon keybase"></div>
</a>
<a href="https://meyer-consulting.net/feed.xml" target="_blank">
<div class="social-icon rss"></div>
</a>
<div class="legal-notice">
<a href="/impressum">
Legal notice
</a>
<a href="/privacy">
Privacy notice
</a>
</div>
</div>
</footer>
</div>
<!-- Main Content Ends -->


<!-- Template JS Files -->
<script src="/assets/js/jquery-2.2.4.min.js"></script>
<script src="/assets/js/jquery.animatedheadline.js"></script>
<script src="/assets/js/bootstrap.min.js"></script>
<script src="/assets/js/transition.js"></script>
<!-- Main JS Initialization File -->
<script src="/assets/js/custom.js"></script>
</body>

</html>
Loading

0 comments on commit 4caae9b

Please sign in to comment.