就是论坛里每个贴子都有点击数,这个点击数是放数据库里的把,它是每点一次就保存到数据库,还是先缓存,然后才到数据库的?因为每点1次就操作一下数据库肯定对数据库性能有影响,如果是缓存,那是怎么缓存的?详细指点下,谢谢!
还有个问题,就是我想程序自动完成个事,就是每天的固定的时刻都作一件事,比如给每个会员发个短信息,想程序自动做这件事,怎么处理?

解决方案 »

  1.   

    string sql = "update V_ArticleList set Hints=Hints+1 where RecordId=定义的id";
    这种语句执行起来是超级快的,不用过分关注性能问题。
      

  2.   

    关于ADO.NET优化看看:
    asp.net夜话之七:ADO.NET介绍
    ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
      

  3.   

    还有个问题,就是我想程序自动完成个事,就是每天的固定的时刻都作一件事,比如给每个会员发个短信息,想程序自动做这件事,怎么处理?
    ---------------------------------------------
    如果是SQL Server可以用作业(job)来实现,也可以用线程在global.asax中启动,当然Windows服务更好了。
      

  4.   

    具体一下呢,我是用ASP。NET这个是关于数据库的的,要是做另外一件和数据库没关系的事,也就是不用操作数据库怎么办?难道用TIMER控件一直运行检测事件的条件是否达到要求才执行?
      

  5.   

    1. 论坛中贴子点击数,如果想实时的话,缓存一个哈希表,点击数存在里面,定时比如五分钟一次更新到数据库中并清除缓存数据.这样麻烦了一点,但是实时显示.取论坛贴子列表一般会缓存个五到十秒的,这期间的点击是在缓存中,所以显示贴子点击数要加上缓存的.
            /// <summary>
            /// 获取或设置浏览次数
            /// </summary>
            public int TotalViews
            {
                get
                {//数据库中的加上缓存中的
                    return totalViews + PostClass.GetPostCacheViews(this.id);
                }
                set { totalViews = value; }
            }int totalViews;
            #region 缓存中的浏览次数
            /// <summary>
            /// 得到贴子在缓存中保存的浏览次数
            /// </summary>
            /// <param name="threadID"></param>
            /// <returns></returns>
            public static int GetPostCacheViews(int threadID)
            {
                Hashtable views = HttpRuntime.Cache[ViewsKey] as Hashtable;
                if (views != null && views[threadID] != null)
                {
                    return Convert.ToInt32(views[threadID]);
                }
                return 0;
            }        /// <summary>
            /// 将缓存中的帖子浏览次数提交到数据库
            /// 此方法供计划任务调用
            /// </summary>
            public static void ViewsUpdate()
            {
                Hashtable views = HttpRuntime.Cache[ViewsKey] as Hashtable;
                if (views == null || views.Count <= 0)
                    return;
                IForumDataProvider dp = ForumsDataProvider.Instance();
                dp.PostViewsUpdate(views);
                HttpRuntime.Cache.Remove(ViewsKey);
            }
            #endregion2.可以在HttpModule中使用Timer执行定时任务    public class HttpModule : IHttpModule
        {
            //收取短信
            static Timer receiveMessage;
            static int receiveMessageIsRuning;        public void Init(HttpApplication app)
            {            if (receiveMessage == null) receiveMessage = new Timer(new TimerCallback(ReceiveMessage), null, 300000, 300000);
    .....
      

  6.   

    每天指定时间做一件事
    写一个服务就可以了,当然winform的程序也行;