Fellas!!
This is a very complicated one and it took me a few days to figure out
exactly what's going on, but here's the final story:
I have a production environment running on .NET with a SQL Server
(2000, SP3). The SQL Server is on a dedicated Proliant computer with
2GB RAM (the actual SQLServer.exe process has dynamic memory
assignment and can reach up to 1.6GB RAM). Nothing else is running on
that specific computer.
Once the SQLServer is started, it hits 300MB RAM (the minimum that was
set in the configuration of the server - remember, it is dynamically
aquired).
Then there is a .NET program that requests just about all the data the
SQL Server contains (apart from a single table that contains roughly
1.6 million rows and another table that contains about 10000 rows
which are all of type IMAGE).
Once all the data is retrieved, the RAM is at about 400MB. From there
on, every update I make to the data on the server causes the RAM to go
up by a bit (that updates are done in a Transaction which of course is
committed at the end). It seems that BLOB updates are the major
problem in all of this. For some reason, uploading a blob of size 9MB
causes the RAM to go up by roughly 20MB and after commit it gose down
10MB (total gain of roughly 10MB RAM). Eventually the SQLServer
process hits its upper limit (1.6GB) and at this point it starts
slowing down.
Some performance checks showed me the SQLServer has a lot of disk
activity, it seems it is reading and writing pages of data from/to the
HD all the time (which causes the queries to be much much much
slower).
We have a development environment running the exact same code (it is
the exact same in everything, except for the amount of data stored in
the DB). This does not happen there at all.
I have a few questions:
1. Why is the RAM going up after BLOB updates?
2. Why is the RAM going up at all?
3. How can I tell the DB which tables should remain in the RAM at all
time (never swapped back to the HD?) - DBCC PINTABLE does not seem to
do the job.
It does not seem to have anything to do with the .NET code.
Thank you very much,
M Yamo. 4 7206
Mee
my 2 cents
1)
I you store image data , the actual data is not stored on the data
pages,instead it stores a 16 -byte pointer in the data row that indicates
where the actual data can be found.
2) We have a development environment running the exact same code (it is the exact same in everything, except for the amount of data stored in the DB). This does not happen there at all.
I think you have answered on your own question.
3)
DBCC PINTABLE is best used to keep small, frequently referenced tables in
memory. The pages for the small table are read into memory one time, then
all future references to their data do not require a disk read.
"Mee Yamo" <me*****@hotmai l.com> wrote in message
news:b5******** *************** ***@posting.goo gle.com... Fellas!!
This is a very complicated one and it took me a few days to figure out exactly what's going on, but here's the final story:
I have a production environment running on .NET with a SQL Server (2000, SP3). The SQL Server is on a dedicated Proliant computer with 2GB RAM (the actual SQLServer.exe process has dynamic memory assignment and can reach up to 1.6GB RAM). Nothing else is running on that specific computer.
Once the SQLServer is started, it hits 300MB RAM (the minimum that was set in the configuration of the server - remember, it is dynamically aquired).
Then there is a .NET program that requests just about all the data the SQL Server contains (apart from a single table that contains roughly 1.6 million rows and another table that contains about 10000 rows which are all of type IMAGE).
Once all the data is retrieved, the RAM is at about 400MB. From there on, every update I make to the data on the server causes the RAM to go up by a bit (that updates are done in a Transaction which of course is committed at the end). It seems that BLOB updates are the major problem in all of this. For some reason, uploading a blob of size 9MB causes the RAM to go up by roughly 20MB and after commit it gose down 10MB (total gain of roughly 10MB RAM). Eventually the SQLServer process hits its upper limit (1.6GB) and at this point it starts slowing down.
Some performance checks showed me the SQLServer has a lot of disk activity, it seems it is reading and writing pages of data from/to the HD all the time (which causes the queries to be much much much slower).
We have a development environment running the exact same code (it is the exact same in everything, except for the amount of data stored in the DB). This does not happen there at all.
I have a few questions: 1. Why is the RAM going up after BLOB updates? 2. Why is the RAM going up at all? 3. How can I tell the DB which tables should remain in the RAM at all time (never swapped back to the HD?) - DBCC PINTABLE does not seem to do the job.
It does not seem to have anything to do with the .NET code.
Thank you very much,
M Yamo.
Mee Yamo (me*****@hotmai l.com) writes: I have a production environment running on .NET with a SQL Server (2000, SP3). The SQL Server is on a dedicated Proliant computer with 2GB RAM (the actual SQLServer.exe process has dynamic memory assignment and can reach up to 1.6GB RAM). Nothing else is running on that specific computer. ... Once all the data is retrieved, the RAM is at about 400MB. From there on, every update I make to the data on the server causes the RAM to go up by a bit (that updates are done in a Transaction which of course is committed at the end). It seems that BLOB updates are the major problem in all of this. For some reason, uploading a blob of size 9MB causes the RAM to go up by roughly 20MB and after commit it gose down 10MB (total gain of roughly 10MB RAM). Eventually the SQLServer process hits its upper limit (1.6GB) and at this point it starts slowing down. ... I have a few questions: 1. Why is the RAM going up after BLOB updates? 2. Why is the RAM going up at all? 3. How can I tell the DB which tables should remain in the RAM at all time (never swapped back to the HD?) - DBCC PINTABLE does not seem to do the job.
I guess since you post, you have a problem with your application. However,
your posting gives little information of what that problem might be.
The default behaviour of SQL Server is go grab as much as memory as
possible. The more data, SQL Server have in cache, the less it has to
read from disks. If there are competing applications on the machine,
this can be a problem if SQL Server does not yield memory fast enough.
But you say that this is dedicated to SQL Server, so if SQL Server gets
some more memory that is no cause for alarm.
DBCC PINTABLE is something you have little reason to play with. If you have
data that you access rarely, but when you access it, you need it quick,
then PINTABLE may be an option. For instance, the Managing Director wants a
report the first day of each months, and he cannot wait those two minutes
it would take to get the data from disk. But using DBCC PINTABLE is likely
to mean that you sacrifice overall performance.
We have a development environment running the exact same code (it is the exact same in everything, except for the amount of data stored in the DB). This does not happen there at all.
The amount of data is surely the clue here. Assuming that you really
have performance problems, they are only likely to show when you have
a full-size database.
Since I don't know what your real problems are, it is diffiult to
give some relevant advice, but a good starting point is to review
indexing, if you have not done this already.
--
Erland Sommarskog, SQL Server MVP, so****@algonet. se
Books Online for SQL Server SP3 at http://www.microsoft.com/sql/techinf...2000/books.asp
Hi,
Thanks for trying to help.
Well the problem still goes on. The SQLServer process has hit its max
RAM allowance and started to slow down again (DISK ACTIVITY). I
restarted the SQLServer service and that solved it.
Why is it memory hogging? Every update seems to leave a residue on the
process's memory consumption.
Erland Sommarskog <so****@algonet .se> wrote in message news:<Xn******* *************** @127.0.0.1>... Mee Yamo (me*****@hotmai l.com) writes: I have a production environment running on .NET with a SQL Server (2000, SP3). The SQL Server is on a dedicated Proliant computer with 2GB RAM (the actual SQLServer.exe process has dynamic memory assignment and can reach up to 1.6GB RAM). Nothing else is running on that specific computer. ... Once all the data is retrieved, the RAM is at about 400MB. From there on, every update I make to the data on the server causes the RAM to go up by a bit (that updates are done in a Transaction which of course is committed at the end). It seems that BLOB updates are the major problem in all of this. For some reason, uploading a blob of size 9MB causes the RAM to go up by roughly 20MB and after commit it gose down 10MB (total gain of roughly 10MB RAM). Eventually the SQLServer process hits its upper limit (1.6GB) and at this point it starts slowing down. ... I have a few questions: 1. Why is the RAM going up after BLOB updates? 2. Why is the RAM going up at all? 3. How can I tell the DB which tables should remain in the RAM at all time (never swapped back to the HD?) - DBCC PINTABLE does not seem to do the job.
I guess since you post, you have a problem with your application. However, your posting gives little information of what that problem might be.
The default behaviour of SQL Server is go grab as much as memory as possible. The more data, SQL Server have in cache, the less it has to read from disks. If there are competing applications on the machine, this can be a problem if SQL Server does not yield memory fast enough. But you say that this is dedicated to SQL Server, so if SQL Server gets some more memory that is no cause for alarm.
DBCC PINTABLE is something you have little reason to play with. If you have data that you access rarely, but when you access it, you need it quick, then PINTABLE may be an option. For instance, the Managing Director wants a report the first day of each months, and he cannot wait those two minutes it would take to get the data from disk. But using DBCC PINTABLE is likely to mean that you sacrifice overall performance.
We have a development environment running the exact same code (it is the exact same in everything, except for the amount of data stored in the DB). This does not happen there at all.
The amount of data is surely the clue here. Assuming that you really have performance problems, they are only likely to show when you have a full-size database.
Since I don't know what your real problems are, it is diffiult to give some relevant advice, but a good starting point is to review indexing, if you have not done this already.
Mee Yamo (me*****@hotmai l.com) writes: Well the problem still goes on. The SQLServer process has hit its max RAM allowance and started to slow down again (DISK ACTIVITY). I restarted the SQLServer service and that solved it.
Why is it memory hogging? Every update seems to leave a residue on the process's memory consumption.
As I tried to explain, this by design. You should not worry about it.
If you have real performance problem with long response times etc, the
people in these newsgroups can assist, but you need to provide more
information.
--
Erland Sommarskog, SQL Server MVP, so****@algonet. se
Books Online for SQL Server SP3 at http://www.microsoft.com/sql/techinf...2000/books.asp This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Jos? Cardoso |
last post by:
Hi,
I have developed a java application that interacts with a database.
Now i've the folowing problem:
- I have a list retrieved from the database(about 200 records);
- for each, i do a Jlabel constructed from an html String;
- for each JLabel i construct a JPanel e add it to the main panel.
this works fine, but when there's an inactivity in the application
|
by: Brian Oster |
last post by:
After applying security patch MS03-031 (Sql server ver 8.00.818) a
query that used to execute in under 2 seconds, now takes over 8
Minutes to complete. Any ideas on what the heck might be going on?
I have tested this extensively and can say for certain that installing
this hot fix is what has caused the performance problem. I just don't
know why or how to fix it.
Brian Oster
|
by: rishi_israni |
last post by:
Hi,
i am having a strange problem running memory intensive queries on SQL
server.
I am doing an update on a table with 9 million records from another
table
with 50 records.
the query i am running is
|
by: pshroads |
last post by:
I am trying to restore a 200 GB database on to a newly formatted SAN
volume. The restore has been running for hours but there doesn't seem
to be a lot of disk activity on the disks I'm restoring to and I'm
wondering if that's anything to worry about.
Using perfmon I'm monitoring the % Disk time for the disk I'm restoring
to. It will show around 99% for a minute or so and then drop to zero
for 3-4 minutes. Is this normal? I know that...
|
by: Mario.Reif |
last post by:
We have developed an application which was running under DB2 v7.2.5
quite well for some years. Four weeks ago we installed DB2 v8.1.5
Express Fixpak 5 on a new Server (hardware is nearly the same as on the
DB2 v7.2.5 machine). The new Server runs on Windows 2003. Last week we
installed another server with the same hardware with DB2 8.1.5 Workgroup
Server Fixpak 5 under Windows 2000 Server. Both servers running DB2 v8
databases are about...
| |
by: Bob |
last post by:
I'd like to be able to make a little app that monitors disk activity just like
task manager, listing all active processes with their current disk read and
write values. It's not obvious to me how to do this with existing performance
counters. Is it possible?
Bob
|
by: max |
last post by:
Hi all,
I want to write a program in C/C++ which monitor any hard disk
activity by a particular program which have assigned for WINXP. For
example, the program are going to run like this.. "fileact word.exe",
so it will monitor any harddisk activity produce by word.exe.
What kind of header/library should i include or should i look into??
any info will be great help, at least help by pointing me any website
or example are doing similar...
|
by: Bobby |
last post by:
Hi,
I'm not 100% sure that this is an Access problem. A friend of mine has
an Access 2003 database. Occasionally he brings a copy to me so that I
can import some of his data into my Access 2003 database. For years he
has done this with no problems by bringing his copy on a CD.
However, last week he put his database onto a memory stick and brought
it to me. When I try to open the database, I get the error "The Visual
Basic for...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
| |
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
|
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| | |