精华内容
下载资源
问答
  • [img=https://img-bbs.csdn.net/upload/201603/24/1458811287_306023.jpg][/img] [img=... 本地执行代码new Date(),获取系统时间到数据库就变了? 这是啥情况?
  • 然后,该应用程序会存储有关火车,目的地,班次,下一趟火车到达时间以及下一趟火车到达为止的分钟数的数据。 所有数据都显示在屏幕上并存储数据库中。 使用的技术: JavaScript jQuery的 火力基地 ...
  • //数据库连接 private static $lifetime;//session的失效时间 private static $date;//当前时间 //php_ini配置session //session.gc_maxlifetime = 设置多少秒过期(系统默认1440秒=24分钟) //session.gc_...
    class session {
        private static $pdo;//数据库连接
        private static $lifetime;//session的失效时间
        private static $date;//当前时间
    
        //php_ini配置session
        //session.gc_maxlifetime = 设置多少秒过期(系统默认1440秒=24分钟)
        //session.gc_divisor = 设置回收机制,值为当用户刷新多少次执行一次回收(系统默认1000次执行一次回收)
        //session.use_cookies = 是否启动客户端cookie来存储sessionId(系统默认1)(1启动,0关闭)
        //session.cookie_lifetime = 0浏览器关闭时,sessionId消失,(系统默认0)(单位秒)
    
        //mysql表字段
        //sessionId
        //finishDate
        //data
        //updateDate
    
        static function init(){
            //数据库连接采用pdo模式
            self::$pdo=new PDO("mysql:host=数据库IP;dbname=数据库名称;port=端口号","数据库用户名","数据库密码",array(PDO::ATTR_PERSISTENT=>true));
            self::$pdo->exec("set names utf8");
    
            self::$lifetime=2592000;//多少秒过期,设置了30天
            self::$date=date('Y-m-d H:i:s');//当前时间
        }
    
        static function start(){
            self::init();//初始化默认值
            session_set_save_handler(
                array(__CLASS__,"open"),//打开
                array(__CLASS__,"close"),//关闭
                array(__CLASS__,"read"),//读
                array(__CLASS__,"write"),//写
                array(__CLASS__,"destroy"),//删除
                array(__CLASS__,"gc")//回收
            );
            @session_start();//开启session
        }
    
        //打开
        public static function open($path,$name){
            return true;
        }
    
        //关闭
        public static function close(){
            self::$pdo = null;
            return true;
        }
    
        //读
        public static function read($sessionId){
            $sql = self::$pdo->prepare('select `finishDate`,`data` from `session` where `sessionId`=?');
            $sql->execute(array($sessionId));
            if(!$res=$sql->fetch(PDO::FETCH_ASSOC)){
                return '';
            }
            if(self::$date>$res['finishDate']){
                self::destroy($sessionId);
                return '';
            }
            return $res['data'];
        }
    
        //写
        public static function write($sessionId,$data){
            if(!empty($data)){
                $sql = self::$pdo->prepare('select `sessionId` from `session` where `sessionId`=? and now()<`finishDate`');
                $sql->execute(array($sessionId));
                if($res = $sql->fetch(PDO::FETCH_ASSOC)){
                    $update = self::$pdo->prepare('update `session` set `updateDate`=?,`data`=? where `sessionId`=?');
                    $update->execute(array(self::$date,$data,$sessionId));
                }else{
                    $insert = self::$pdo->prepare('insert into `session`(`sessionId`,`updateDate`,`finishDate`,`data`)values(?,?,?,?)');
                    $insert->execute(array($sessionId,self::$date,date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s")." +".self::$lifetime." second")),$data));
                }
            }
            return true;
        }
    
        //删除
        public static function destroy($sessionId){
            $sql = self::$pdo->prepare('delete from `session` where `sessionId`=?');
            $sql->execute(array($sessionId));
            return true;
        }
    
        //回收
        private static function gc($lifetime){
            $sql = self::$pdo->prepare('delete from `session` where now()>`finishDate`');
            $sql->execute();
            return true;
        }
    }
    
    
    //调用
    session::start();
    
    展开全文
  • FlockDB是一个存储图数据的数据库,但是它并没有优化遍历图的操作。它优化的操作包括:超大规模邻接矩阵查询,快速读写和可分页查询。FlockDB将图存储为一个边的集合,每条边用两个代表顶点的64位整数表示。对于一个...
  • ArangoDB是一个有趣的新型多模型数据库,它融合了三种流行的数据模型:文档,图形和键值存储。一些其他功能,如数据库端脚本终端也非常有趣的。试一试!让我们启动设置,并在Docker上的DigitalOcean上部署一个现成的...
        

    ArangoDB是一个有趣的新型多模型数据库,它融合了三种流行的数据模型:文档,图形和键值存储。一些其他功能,如数据库端脚本终端也非常有趣的。试一试!让我们启动设置,并在Docker上的DigitalOcean上部署一个现成的ArangoDB设置。

    图片描述

    阅读这篇文章的媒介预测是2分钟。您也可以在这段时间内设置ArangoDB!其实你只需要点击大约5次,然后执行3个命令。

    Create DigitalOcean Droplet with Docker

    Register/Log-in to DigitalOcean and create a new droplet with docker preinstalled:

    “Create Droplet” -> “One-click Apps” -> “Docker 17.03.0-ce on 16.04“
    The versions might differ.

    Choose your preferred settings (size, region etc.) and add an SSH key to access the droplet afterwards.

    Install & start ArangoDB

    Just connect to your droplet (use your droplets IP and the SSH key)..

    ssh -i /path/to/your/ssh-key root@12.345.67.89
    

    .. and execute one single command (choose your custom password instead of ha2WF4qdHc):

    docker run -e ARANGO_ROOT_PASSWORD=ha2WF4qdHc -p 8529:8529 -d arangodb/arangodb
    
    

    The command does certain things

    • It downloads the newest ArangoDB docker image (because it is not yet
      available on the droplet).

    • It installs the ArangeDB docker image,
      creates a root user with the given password and starts the container.

    • It makes sure that the ArangoDB port 8529 is accessible from outside
      the docker container.

    Open it for the world

    Now, wo just have to open the port of the droplet to access the database from the “open” internet:

    ufw allow 8529
    

    Ready to create great apps with ArangoDB!

    The database endpoint is ready for queries!

    You can create databases, users, permissions and many more from the built-in ArangoDB interface. Just use the IP of your droplet and the default ArangoDB-Port 8529.

    http://12.345.67.89:8529/
    

    Have fun!
    Find ArangoDB on Github

    原文链接: https://medium.com/ninjaconce...

    展开全文
  • PHP按时间戳存时间持久化MySql最多能多长日期,超出范围怎么办? 问题分析 PHP存储Int类型最大是多少? 整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 ...

    前言

    如标题所示,这篇主要讨论的问题是

    PHP按时间戳存时间持久化到MySql最多能到多长日期,超出范围怎么办?

    问题分析

    PHP存储Int类型最大是多少?

    整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18,除了 Windows 下 PHP 7 以前的版本,总是 32 位的。 PHP 不支持无符号的 integer。Integer 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示,最小值可以在 PHP 7.0.0 及以后的版本中用常量 PHP_INT_MIN 表示。

            echo "int最大值:";
            var_dump(PHP_INT_MAX);
            echo "<br/>";
            echo "int最小值:";
            var_dump(PHP_INT_MIN);
            echo "<br/>";
    
    int最大值:int(9223372036854775807)
    int最小值:int(-9223372036854775808)
    

    数据库存储时间按时间戳最大日期是多少?

    按一般操作习惯,存时间戳的字段一般为

     `created` int(10) unsigned NOT NULL DEFAULT '0'
    

    10位的无符号整型。

    通过查找官方文档,如下所示

    在这里插入图片描述
    无符号整型可以存储的最大值是 4294967295

    换算成日期可以存储为2106-02-07 14:28:15

    也就是说,如果保存这个日期以后的时间戳就会报错。

    数据库存日期不够用了怎么办?

    根据前面得到的结论

    日期超过2106-02-07 14:28:15,作为时间戳就存不进去了!!!

    BIGINT

    BIGINT无符号能存储的最大数字是 264-1

    DATETIME

    A DATETIME or TIMESTAMP value can include a trailing fractional seconds part in up to microseconds (6 digits) precision. In particular, any fractional part in a value inserted into a DATETIME or TIMESTAMP column is stored rather than discarded. With the fractional part included, the format for these values is ‘YYYY-MM-DD hh:mm:ss[.fraction]’, the range for DATETIME values is ‘1000-01-01 00:00:00.000000’ to ‘9999-12-31 23:59:59.999999’, and the range for TIMESTAMP values is ‘1970-01-01 00:00:01.000000’ to ‘2038-01-19 03:14:07.999999’.

    最多可以支持到9999年,按目前来讲也够用了。

    总结

    • 时间戳存在一定局限性,和业务需求研究不明白容易出问题
    • 看问题优先看官方文档,网上二次加工或者搬运的资料大概率是过时的

    参考资料

    • https://www.php.net/manual/zh/language.types.integer.php
    • https://dev.mysql.com/doc/refman/5.7/en/integer-types.html
    • https://dev.mysql.com/doc/refman/5.7/en/datetime.html
    展开全文
  • MySQL数据库优化

    千次阅读 2016-02-26 13:04:44
    到数据库的优化,我在MySQL数据库引擎这篇...等了大约一二十分钟的样子,才插入了一百万数据,但是MyIsam存储引擎的表只用了五分钟时间,一直拖晚上十一点多,还是没有完成,无奈我只能改为插入一百万的数据作为

    说到数据库的优化,我在MySQL数据库引擎这篇文章当中对使用MyIsam存储引擎的表和使用InnoDB存储引擎的表之间对比的过程中发现,InnoDB存储引擎的表插入速度十分的慢,我创建了一个存储过程直接往数据库中插入一千万条数据的时候,等了大约一二十分钟的样子,才插入了一百万数据,但是MyIsam存储引擎的表只用了五分钟的时间,一直拖到晚上十一点多,还是没有完成,无奈我只能改为插入一百万的数据作为测试。后来一想到,我的InnoDB存储引擎的表在插入的时候可能默认的是自动提交,这样的话每一次插入都要打开连接一次,十分耗时,解决方案是批处理,开始的时候把自动提交关闭,然后存储过程执行结束的时候开启自动提交即可。从这里可以看出优化是多么的重要。



    批处理优化


    正如上面所说的那样,批量的插入数据和一次次的插入数据效率是有很大的差距的。比如说:

    create table testOptimize( id int unsigned primary key auto_increment, name varchar(20) );
    
    创建这样的一个表,默认了存储引擎是InnoDB,因为InnoDB是支持事务的。

    mysql> create procedure insertOptimize()
        -> begin
        -> set @i = 1;
        -> while @i <= 1000
        -> do 
        -> insert into testOptimize(name) values(concat("wy", @i));
        -> set @i = @i + 1;
        -> end while;
        -> end//
    Query OK, 0 rows affected (0.38 sec)
    
    mysql> call insertOptimize//
    Query OK, 0 rows affected (7.39 sec)
    
    mysql> \d ;
    mysql> set autocommit = 0;
    Query OK, 0 rows affected (0.15 sec)
    
    mysql> call insertOptimize;
    Query OK, 0 rows affected (0.65 sec)
    
    mysql> set autocommit = 1;
    Query OK, 0 rows affected (0.14 sec)

    上面是一段存储过程:插入一千条数据的时间的对比,从这里面可以直接看出,差距还是比较大的,默认的情况下自动提交,这时候的执行时间是7.39秒,而将自动提交关闭,最后开启自动提交的方式,执行时间为1s以内,这样的差距对于大批量的数据插入差距更是十分明显的。


    批量插入的另一种方式:


    insert into testOptimize(name) values("wy1"),("wy2"),("wy3");

    打开一次连接插入多次数据。


    存储过程在上面的例子中已经用到了,这里不再举例子了。



    触发器


    创建一个触发器,在插入testOptimize表的同时,要往testOptimize2表中插入数据。

    CREATE trigger testTriger before insert on testOptimize for each row
    begin
    insert into testOptimize2(id, name) values(new.id, new.name);
    end
    

    这里直接调用上一步中的存储过程即可。



    索引优化


    数据库优化中最常见的也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题。

    MySQL数据库引擎这篇文章中已经介绍了MyIsam存储引擎的主要特性,这里再简要说明一下,表的数据和索引分开来存储,各自是独立的文件,innoDB是存放在一个文件当中。

    MySQL不支持函数索引,但是可以对列的某一部分进行索引,可以只取出四个字符进行索引。这个特性可以缩小索引文件的大小,可以根据这个特性去设计采用谁去生成索引。



    存在索引且会用到索引


    1. 查看SQL语句影响的行数

    对于创建了索引的列:

    mysql> desc select * from testOptimize where id = 1\G;
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: testOptimize
             type: const
    possible_keys: PRIMARY
              key: PRIMARY
          key_len: 4
              ref: const
             rows: 1
            Extra: 
    1 row in set (0.00 sec)
    
    对于没有进行索引的列:

    mysql> desc select * from testOptimize where name = "wy1"\G;
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: testOptimize
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 3242
            Extra: Using where
    1 row in set (0.00 sec)
    

    我们会看到中间的rows信息的差别:上面创建了索引的列的查询行数为1,而下面的没有创建索引的列的查询行数为3242,应该说,如果数据量比较大的时候,明显是查询的行数越少效率会越高。


    对下面这句没有索引的进行优化,也就是说对他创建索引,当然索引在使用时注意,不要随便建索引,因为索引会占据很大的空间存储。一般的是对于效率很低的查询语句中没有用到索引的列进行创建索引以提升速度。

    mysql> alter table testOptimize add index testOptimize(name);
    



    2. like的查询


    后面如果是常量且只有%不在第一个字符的时候,索引才可能用得上的。

    比如(这里name已经创建了索引):

    desc select * from testOptimize where name like "wy1%"\G;
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: testOptimize
             type: range
    possible_keys: testOptimize
              key: testOptimize
          key_len: 23
              ref: NULL
             rows: 337
            Extra: Using where; Using index
    1 row in set (0.22 sec)
    

    那么将%放在第一位的话:

    mysql> desc select * from testOptimize where name like "%wy1"\G;
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: testOptimize
             type: index
    possible_keys: NULL
              key: testOptimize
          key_len: 23
              ref: NULL
             rows: 3242
            Extra: Using where; Using index
    1 row in set (0.25 sec)



    3. 如果某一列有索引,使用column_name is null 可能会使用索引。

    这里的影响行数是1,而不是全部的数据。

    mysql> desc select * from testOptimize where name is null\G;
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: testOptimize
             type: ref
    possible_keys: testOptimize
              key: testOptimize
          key_len: 23
              ref: const
             rows: 1
            Extra: Using where; Using index
    1 row in set (0.40 sec)
    



    存在索引但不使用的情况


    1. 如果MySQL估计使用索引比全表扫描的更慢的话,不使用索引。

    2. 用or连接的条件如果or前面的条件中的列有索引,后面的没有索引,那么涉及到索引不会被用到。

    <strong><span style="font-size:18px;">mysql> alter table testOptimize drop index testOptimize;
    Query OK, 0 rows affected (0.16 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc select * from testOptimize where name = "wy1" or id = 111\G;
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: testOptimize
             type: ALL
    possible_keys: PRIMARY
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 3242
            Extra: Using where
    1 row in set (0.00 sec)</span></strong>
    

    展开全文
  • 该应用程序将提取Tesla车辆的数据,并将其定期存储在MySQL数据库中。 它提取数据的频率取决于车辆的“状态”。 如果状态在过去10分钟内发生更改,则将使用当前状态和先前状态的最小值(即以规定更频繁的轮询为准)。...
  • kairosdb时序数据库

    2021-03-31 10:07:45
    时序数据库时间存储值,可以一分钟打一个点,且有前端页面可以直接查看存储数据的趋势图,kairosdb查询数据和插入数据都要发送post请求,与关系型数据库相比,kairosdb会将多个列名折叠成一行来表示一个时间段。...
  • 本文我会详细的介绍 Python 的安装 开发工具的简单介绍,并编写一个抓取天气信息数据并存储到数据库的例子。(这篇文章适用于完全不了解Python的小白超超超快速入门) 如果有时间的话,强烈建议跟着一起操作一遍...
  • 说明: 在本地计算机上,创建一个文件夹/目录并cd进入其中,然后打开一个终端。... 禁止连接,这将实现每分钟大约2500次写入。 进一步的版本将尝试减少内存消耗(即空间复杂性)。这将允许更快的上载时间
  • SQL数据库修复软件

    2012-11-18 21:08:33
    支持版本 6.5 7.0 2000 2005 2008 2008R2 2012 误删除,误丢失,所在分区误格式化,误GHOST等情况的数据库存储残片恢复组合。 支持版本 6.5 7.0 2000 2005 2008 2008R2 2012 TRUNCATE 表 ;drop表;delete表;数据...
  • 数据库如何优化

    2016-08-22 17:29:44
    (业务背景,一张实时数据表,存储近百家电厂发电机组的负荷数据(还有其它指标数据),每台机组5分钟生成一条记录,目前为止已有六百多万条记录。 需求:哪些机组跳机了?(满足条件:前面一次负荷>=10%,...
  • 该过程会将数据库或表空间恢复某个特定时间点。前滚恢复要求启用归档日志记录。 3. 恢复的级别 建立灾难恢复计划对于现代企业至关重要。企业数据库中的信息对于进行业务活动是极其重要的。保护该数据以及在灾难...
  • oracle数据库数据同步

    2013-08-18 16:27:24
    为了满足客户的要求,客户要求两台数据库服务器在不能直接通信的情况下,要保证两台数据库数据保持同步,并且要保证效率,数据量一般每分钟最少可以到达2万条(只能通过端口访问),所以只能使用程序先生成满足特定...
  • syslog服务器接收日志,存储到MySQL数据库 后台定时任务从MySQL库中采集数据并解析,每五分钟跑一次 后台接口查询解析后的数据,分析浏览量和访问量 日志传输 遇到的问题主要还是在日志传输上,其他地方没有什么...
  • 从事件探查器中监控如下语句执行时间查过 1分钟: EXEC dbo .sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 72 该存储过程被“ 分发清除:分发 ”作业每10 分钟调用一次,用户 从...
  • 数据库MySQL-读写分离

    2021-02-19 16:47:47
    数据库的角度来说,对于大多数应用来说,从集中分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即 SQL 查询的瓶颈,我们知道,正常情况下,Insert SQL 就是几十个毫秒的时间内写入完成,而系统...
  • 玩Oracle2年多了,从接触...数据库是直接的存储地方的,他的重要性是不言而喻的,宕机带来的损失可能是按分钟或者秒算的。而谁对这些数据库负责--DBA。所以很多公司,企业都是找有经验的DBA,他们也是在为他们的系统买
  • Oracle Database 10g 可以在 17分钟内安装完毕,对您的数据库进行完整全面的配置 易于管理 针对中小型企业应用的需求及特点,Oracle 10g 标准版 和 Oracle 10g 标准版1 提供数据库自动管理的功能降低数据库管理的...
  • 实现短信验证码5分钟有效时间

    万次阅读 2017-08-25 18:25:31
    实现短信验证码5分钟有效时间:实现一个发送短信验证码的请求,要求5分钟之内重复请求,返回同一个验证码。 网上可找到几种方案: 如,存储数据库或缓存中。实现起来比较麻烦,舍弃; 另一种方式即本例,使用...
  • 数据库性能受磁盘读写速度限制,每次磁盘读写会先寻道,再旋转 所以读写中的寻道和旋转的机械...通常数据库使用B-tree的数据存储结构,检索某个数据的次数为log2(n),n为总数据量, 1,000,000一百万数据检索...
  • 数据库的角度来说,对于大多数应用来说,从集中分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即SQL查询的瓶颈,我们知道,正常情况下,Insert SQL就是几十个毫秒的时间内写入完成,而系统中...
  • 12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5 13、说明:一条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序...
  • 1、日期和时间数据类型:包括datetime和smalldatetime两种类型。...使用smalldatatime数据类型时,日期范围是从1900年1月1日2079年12月31日结束,时间精度是1分钟 2、二进制数据类型包括 binary:存储固...
  • 但在C#程序代码里调用,需要1分钟左右时间才能显示出来。 网上查问题发现一个大佬的博客发现问题是 “计划任务过期” 并给出了解决方案。 立即在查询分析器上执行: exec sp_recompile @objname=‘存储过程名称’ ...
  • NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。 NHibernate的目标是对于...
  • 这个存储过程每分钟执行一次单线程(A表中除了插入还有修改[count] = 3 的都是多线程。) 功能:就是将A 表[count] > 2 的数据备份B表,并将A表中已备份的数据删除掉, 但是有时候A表的一条数据会在B表中备份...
  • 我们在MySQL中的数据一般是放在磁盘中的,读取数据的时候肯定会有访问磁盘的...当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是我们可以通过B树进行优化,提高磁盘读取时定位的效率。 为什么

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 292
精华内容 116
关键字:

数据库存储时间到分钟