|
|
 |
|
 |
 |
|
 |
|
|
ArGoStuff User to User Support Forums
|
 |
|
 |
| Author |
Messages |
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-13-2008 2:06 PM |
|
Hi
I discovered today that the mail server tables don't have any indexes on them. Even the cache and mailboxdata ones. Anyone else found this to be the case? I can't beleave its been designed without the indexes.
|
|
|
|
|
SteveT Forum Administrator
 Posts: 2594 Online:  ArGoNuke Admiral


 |
| 08-13-2008 2:25 PM |
|
| Actually, Each table has a RecNo field. That field is the Identity Key for each table and it is indexed. |
|
Regards, Steve Topilnycky Top Cat Computing http://www.topcatcomputing.com |
|
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-13-2008 2:34 PM |
|
Hmm, we I can see its design to be a key (recno field). But there is no index on any of recnos in my database, no fields are set to primary keys. Which is not great to say the least, but there is no indexes on any of the major fields. This is going to have a massive impact on performance when the database grows a little more.
I've just added some indexes on some tables for the time being as a quick.
Just going to have a look in the forums to see if anyone is have any speed issues (could be related).
|
|
|
|
|
SteveT Forum Administrator
 Posts: 2594 Online:  ArGoNuke Admiral


 |
| 08-13-2008 2:49 PM |
|
| I have not had any issues with it. My MS-SQL not only runs Mail Server, but the back end DB for this and 5 other websites among other things. I have also taxed the server with nearly 2000+ outbound messages, and recieving my normal load plus bounces and the server performed well. There should be a thread in the Site News forum about that project. |
|
Regards, Steve Topilnycky Top Cat Computing http://www.topcatcomputing.com |
|
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-13-2008 3:00 PM |
|
| 2000 messages was not an issue. 10000 for me became bigger problem (newsletter). It will get much worse as it scales if the indexes are not on. |
|
|
|
|
SteveT Forum Administrator
 Posts: 2594 Online:  ArGoNuke Admiral


 |
| 08-13-2008 4:20 PM |
|
| I don't see it as issue, but I am no SQL expert nor the developer and I think a lot depends on the controller logic. I have forwarded your comments to the developer (Archie) and I will let you know what he says. |
|
Regards, Steve Topilnycky Top Cat Computing http://www.topcatcomputing.com |
|
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-13-2008 6:16 PM |
|
Sorry to be so forceful. But I'm telling, not asking. If the mail server is setting up the database with no indexes as standard, it will be a massive problem for anything other than a small database. If there is no index the database has to look at each and every record until it finds the record it wants (not forgetting the records will be out of order). If there is an index, this could be reduced to just a few lookups. On a table with 1000s of records its not an issue. But once your talking about ten of thousands of records or more it will really so down. Don't forgot this compounded by the fact that the database is queried by the mail server many times a second (or it tries to). I've seen instances where a query on a database has been taking minutes reduced to under a second just by adding a index on a field. I've been using Archie's products for quite some years now and he is a great programmer, but if he has missed this it is great mistake. I hope this is corrected. PS. I would be more than happy to publish details of the indexes I've added or even write a script to add the indexes. |
|
|
|
|
SteveT Forum Administrator
 Posts: 2594 Online:  ArGoNuke Admiral


 |
| 08-14-2008 12:24 PM |
|
I would be more than happy to publish details of the indexes I've added or even write a script to add the indexes. I would love to see that and the script. I have communicated with Archie and he will be adding it at some point in the future. |
|
Regards, Steve Topilnycky Top Cat Computing http://www.topcatcomputing.com |
|
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-18-2008 9:33 PM |
|
Hi Steve, The next post I do will included the code to create the indexes. The indexes are put on just three tables DeliveryQueue, DnsCache, MailboxData. These tables are the ones with the most records and are 'hit' the most times. Without seeing the code I'm working a little blind but its a good start. With some of SQL servers query logging I could optimize the database more. Ideally Primary keys and relationships should be added. But this is really a job for Archie. On another note I discovered that if the DnsCache grows very large (in my case it was tens of thousands of rows when I did the newsletter) if the server is stopped and started it hangs on deleting the old records from DnsCache. Even with the index its still struggling. I suspect this is because of an unoptimized query. I could have a look at how that query is working and maybe offer a solution/ifx if archie is busy. Glenn |
|
|
|
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-18-2008 9:33 PM |
|
/*********************************************************/ /****** Create a Indexes Recno, ******/ /****** NextAttemptTime, ******/ /****** Created, ******/ /****** in DeliveryQueue Table ******/ /*********************************************************/ CREATE NONCLUSTERED INDEX [Recno] ON [dbo].[DeliveryQueue] ( [RecNo] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ CREATE NONCLUSTERED INDEX [NextAttemptTime] ON [dbo].[DeliveryQueue] ( [NextAttemptTime] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ CREATE NONCLUSTERED INDEX [Created] ON [dbo].[DeliveryQueue] ( [Created] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ /****** Create a Indexes Recno, ******/ /****** DomainName, ******/ /****** RecordType, ******/ /****** Expires, ******/ /****** in DnsCache Table ******/ /*********************************************************/ CREATE NONCLUSTERED INDEX [Recno] ON [dbo].[DnsCache] ( [RecNo] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ CREATE NONCLUSTERED INDEX [DomainName] ON [dbo].[DnsCache] ( [DomainName] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ CREATE NONCLUSTERED INDEX [RecordType] ON [dbo].[DnsCache] ( [RecordType] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ CREATE NONCLUSTERED INDEX [Expires] ON [dbo].[DnsCache] ( [Expires] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ /****** Create a Indexes Recno, ******/ /****** MailboxID, ******/ /****** in MailboxData Table ******/ /*********************************************************/ CREATE NONCLUSTERED INDEX [Recno] ON [dbo].[MailboxData] ( [RecNo] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ CREATE NONCLUSTERED INDEX [MailboxID] ON [dbo].[MailboxData] ( [MailboxID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] /*********************************************************/ |
|
|
|
|
SteveT Forum Administrator
 Posts: 2594 Online:  ArGoNuke Admiral


 |
| 08-21-2008 10:07 AM |
|
| Thanks I will give it a try. As for the DNS Cache, I thought that was changed in one of the earlier releases. Are you using the latest version? |
|
Regards, Steve Topilnycky Top Cat Computing http://www.topcatcomputing.com |
|
|
gyroscopes
Posts: 19 Online:  ArGoNuke Apprentice


 |
| 08-21-2008 11:10 AM |
|
I'm on v1.0.5.2. I tend to upgrade on more major releases. If there anything you or archie wants me to look into I try to help. Anything regarding databases I should be able to help. Included triggers, rollbacks, indexes, speed issues etc etc. |
|
|
|
|
SteveT Forum Administrator
 Posts: 2594 Online:  ArGoNuke Admiral


 |
|
|
| You are not authorized to post a reply. |
|
|
|
ActiveForums 3.7
|
|
|
|
|
|
 |
| Mail Server v1.0.5.9 | |
Mail Server
- Added additonal tracking of connections for SMTP and POP3: if they stay on for over 30 minutes, they are
getting disconnected;
- Fixed a problem with mailbags when they accept mail only when main server is down: in case of timeout
mailbags were still treating the main server as "available" and rejecting mail;
- Changed color coding of logs. Now red denotes only errors, delivery is green, POP3, SMTP, IMAP
connections - blue;
Web Interface
-
Fixed a problem, when session timeouts were causing errors in the windows system logs;
| | 1/2/2009 1:52:01 PM |
|
| Happy Holidays to All!!! | Just wanted to wish everybody Happy Holidays, and wish all the best to all in 2009
Looking forward to work with you next year!
Archie
| | 12/23/2008 10:13:32 PM |
|
| Mail Server Pro v1.8.9.6 |
- Improved Export to .NET function - sometimes email messages were not getting exported, because
the database of email messages was not up to date. Now each folder gets rebuilt before the export
function;
| | 12/2/2008 11:19:02 PM |
|
| Email Address Validator | We have discontinued our email address validation service, and launched new web site:
http://www.emailaddressvalidator.com
It provides the web service interface to validate lists of email addresses. We hope that our service will help to reduce unwanted traffic on Internet, ensuring that mail is sent only to valid and legitimate addresses.
Sign up now, and get 150 free validations!
| | 11/25/2008 10:13:02 AM |
|
| Mail Server v1.0.5.8 | |
Mail Server
- Mailbags now have an option to accept mail only when specified server is down - will help to fight
with spam which attempt to deliver mail bypassing the main server;
- When delivering mail, if main exchanger returns 4xx reply (temporary problem), the server will not
try other exchangers, will retry later the main exchanger;
- Server options moved from registry to a XML file. 64 bit versions of Vista and 2008 server appear
to be having access rights problems to the Windows registry, and the change will make our server more
compatible with 64 bit versions;
- Added an option to specify the number of lines on the log screen, when using the user interface.
Was causing memory problems if left running for long time;
- Fixed couple of problems, which were showing when SQL server was set up to use
case sensitive SQL statements;
- Made changes in the remoting interface to allow logging in using aliases;
Web Interface
- Made changes to allow logging in using aliases;
- When viewing folders, web interface now displays the name of logged in user;
| | 11/12/2008 2:31:31 PM |
|
|
|
|
|
 |
 |
|
 |
|
|
Protect Your Computer today with
|
|
|
|
|
|
 |
 |
|
 |
|