今天做oracle日期插入的时候突然开始疑惑日期是如何插入的。 用框架久了,反而不自己做简单的工作了。比如插入。...像insert这样的语句很少写了,除了备份sql的时候。 言归正传, mysql插入日期不限制分隔符,不必明确格式, 至少测试了n次都成功了。...oracle插入日期 1.直接插入日期格式错误,todate函数可以: 1 --插入实例 2 insert into person(name, birth) values('ceshi',sysdate...); 3 --错误的时间格式 4 insert into person(name,birth) values('hehe','2015-06-02 00:00:00'); 5 --正确的插入日期 6 insert...java.sql.Timestamp.valueOf("2014-06-08 05:33:99")); 4 System.out.println(person); 5 person.save(); 一点是只有日期格式的
建表sql语句 接下来如果你插入的数据是 insert成功case 能成功。一切正常。 但如果你插入的是 insert失败case 就会报错。...明明也是字符串,为什么字符串里含有emoji表情,插入就会报错呢? 我们从字符集编码这个话题开始聊起。...mysql默认的utf8字符集,其实只是utf8mb3,并不完整,当插入emoji表情等特殊字符时,会报错,导致插入、更新数据失败。改成utf8mb4就好了,它能支持更多字符。...mysql建表时如果不知道该选什么字符集,无脑选utf8mb4就行了,你会感谢我的。...这样的一个事故,复盘会一开,会挂P几呢?
Oracle数据库 插入系统日期 insert into emp(empno,eanme,hiredate) values(1112,'chy',sysdate); 插入Oracle数据库指定格式的日期...insert into emp(empno,ename,hiredate) values(1113,'chy2','29/6月/2019'); 使用to_date()插入其他格式的日期(最常用) insert...,使用的是to_char(),注意区分 例如:查询入职日期大于2019-05-18的用户数据(05中的0不能省略) select * from emp where hiredate to_char...(dt.dtdate,'YYYY-MM-DD')>='2019-05-18' Mysql 插入当前时间 NOW()函数以`'YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME...CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。 CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。
就跟卡bug一样,比如说你去面试,面试官问你:MySQL为什么会死锁;你告诉面试官:你录用我我就告诉你,面试官说:你告诉我我就录用你,然后你两就一直这么你问我我问你,这就是死锁。...,在下面我们会分析为什么出现死锁: 3️⃣ 死锁的底层原理分析 其实有了昨天的知识储备,了解了查询的时候的加锁情况,我们其实不难分析出为什么会死锁: select * from team where position_no...,会加上(7,+∞]的临键锁 两个事务都持有范围为(6,+∞]的临键锁,而接下来的插入操作会去获取插入意向锁,插入意向锁与临键锁互斥,因此获取插入意向锁需要对方的事务的临键锁释放,于是就出现了循环等待,...,我们可以修改订单号的生成规则,以雪花算法或者Redis去生成订单号,或者说可以给订单号这个字段加上唯一的索引…… 总结 今天的文章只是带大家简单走了一遍MySQL的死锁情况,关于为什么会死锁,讲完昨天的文章...,也就是对查询时的加锁情况的讲解,其实来分析这个死锁的情况并不是一件难事,最后也介绍了从数据库层面和业务层面如何去防止MySQL出现死锁的情况。
最近使用 Navicat for MySQL 将一个 Excel 文件导入到 MySQL 数据库,导入之后发现所有日期时间都错了。...Excel中的出生日期导入到数据库后显示的日期最开始我还以为是数据库的日期字段类型设置的有问题,但是修改之后仍然不对。...后来发现问题出现在 Navicat for MySQL:日期及时间格式设置,默认是 DMY(日月年),我们这里要根据实际情况改为 YMD ,也就是年月日。日期分隔符修改为空,就可以正确导入了。...也就是说这里要根据 Excel 中内容的实际情况修改一下就不会导入错误了。
MySQL优化器索引选择迷思。 高鹏(八怪)对本文亦有贡献。 1. 问题描述 群友提出问题,表里有两个列c1、c2,分别为INT、VARCHAR类型,且分别创建了unique key。...他表示很不理解,难道不应该选择看起来代价更小的INT类型的c1列吗? 2....k2 索引,这是为什么呢?...看来,MySQL优化器还是有必要进一步提高的哟 :) 测试使用版本:GreatSQL 8.0.25(MySQL 5.6.39结果亦是如此)。...Enjoy MySQL :) 《实战MGR》视频课程 复制链接在浏览器中打开 https://space.bilibili.com/1363850082
为什么会出现上面的结果?我们看一下select * from test where val=4 limit 300000,5;的查询过程: 查询到索引叶子节点数据。...MySQL耗费了大量随机I/O在查询聚簇索引的数据上,而有300000次随机I/O查询到的数据是不会出现在结果集当中的。...肯定会有人问:既然一开始是利用索引的,为什么不先沿着索引叶子节点查询到最后需要的5个节点,然后再去聚簇索引中查询实际数据。这样只需要5次随机I/O,类似于下面图片的过程: 其实我也想问这个问题。...符合我们的预测。也证实了为什么第一个sql会慢:读取大量的无用数据行(300000),最后却抛弃掉。...而且这会造成一个问题:加载了很多热点不是很高的数据页到buffer pool,会造成buffer pool的污染,占用buffer pool的空间。
为什么会出现上面的结果?我们看一下select * from test where val=4 limit 300000,5;的查询过程: 查询到索引叶子节点数据。...肯定会有人问:既然一开始是利用索引的,为什么不先沿着索引叶子节点查询到最后需要的5个节点,然后再去聚簇索引中查询实际数据。这样只需要5次随机I/O,类似于下面图片的过程: 其实我也想问这个问题。...,我们需要知道MySQL有没有办法统计在一个sql中通过索引节点查询数据节点的次数。...符合我们的预测。也证实了为什么第一个sql会慢:读取大量的无用数据行(300000),最后却抛弃掉。...而且这会造成一个问题:加载了很多热点不是很高的数据页到buffer pool,会造成buffer pool的污染,占用buffer pool的空间。
为什么会出现上面的结果?我们看一下select * from test where val=4 limit 300000,5;的查询过程: 查询到索引叶子节点数据。...MySQL耗费了大量随机I/O在查询聚簇索引的数据上,而有300000次随机I/O查询到的数据是不会出现在结果集当中的。推荐:MySQL 索引B+树原理,以及建索引的几大原则。...肯定会有人问:既然一开始是利用索引的,为什么不先沿着索引叶子节点查询到最后需要的5个节点,然后再去聚簇索引中查询实际数据。这样只需要5次随机I/O,类似于下面图片的过程: ?...符合我们的预测。也证实了为什么第一个sql会慢:读取大量的无用数据行(300000),最后却抛弃掉。...而且这会造成一个问题:加载了很多热点不是很高的数据页到buffer pool,会造成buffer pool的污染,占用buffer pool的空间。
当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 为什么正常执行的SQL突然慢了一下?...比如下面在正常不过的查询也会产品慢SQL SELECT * FROM XXX WHERE ID=1; mysql抖一下就是在刷脏页, 刷脏页的四个场景: (1)redo log满了 应该就是 InnoDB...(3)mysql空闲的时候 为了提高效率,mysql有空就会刷脏页 (4)mysql正常关闭的时候,会触发脏页刷盘 因为没能正确地设置 innodb_io_capacity 参数,而导致的性能问题也比比皆是...之前,就曾有其他公司的开发负责人,找一个库的性能问题,说 MySQL 的写入速度很慢,TPS 很低,但是数据库主机的 IO 压力并不大。...iops普通机械硬盘只有几百,ssd有上千,可以不开启) 避免大量刷脏页,脏页flush可能会产生内存抖动。
导读:用了这么久MySQL ,用 limit 为什么会影响性能?...为什么会出现上面的结果?我们看一下select * from test where val=4 limit 300000,5;的查询过程: 查询到索引叶子节点数据。...肯定会有人问:既然一开始是利用索引的,为什么不先沿着索引叶子节点查询到最后需要的5个节点,然后再去聚簇索引中查询实际数据。这样只需要5次随机I/O,类似于下面图片的过程 其实我也想问这个问题。...符合我们的预测。也证实了为什么第一个sql会慢:读取大量的无用数据行(300000),最后却抛弃掉。...而且这会造成一个问题:加载了很多热点不是很高的数据页到buffer pool,会造成buffer pool的污染,占用buffer pool的空间。
今天分享的内容是MySQL为什么有时候会“抖一下”?...以上两种情况,都有内存和磁盘的交互过程,而这个交互过程本身比较慢,另一方面,刷脏页的逻辑会占用磁盘的IO资源,还会导致我们的更新操作变慢,所以会导致MySQL看起来像"抖"了一下。...场景3、内存数据页刷盘过程中的额外开销 除了刷盘本身带来的性能影响之外,innodb的另外一个机制也会导致原本的性能更低下。...1、脏页控制策略---刷盘速率 当我们明确告知MySQL系统的磁盘能力,这有助于MySQL正确的执行落盘操作。innodb_io_capacity参数可以告诉Innodb系统磁盘的能力。...2、脏页刷盘条件---脏页比例 在Innodb中,脏页比例和redo log的写盘速度会影响脏页的刷盘效率。
这天生意太好了,要记录的数据太多,掌柜的发现快记不住了,就必须先把部分数据记录在账本上,这种场景就是我们的内存不够了,就要淘汰一些数据页,空出内存给别的数据页使用,如果淘汰的是脏页,就必须先写入磁盘,有人会问为什么不去内存淘汰掉呢...正如我们的mysql系统空闲的时候,mysql只要有时间就会刷一下脏页....还有就是酒店关门了,休业了,我们这个时候也可以把账目结一下,对应的就是mysql关闭,这个时候mysql就可以把内存的脏页都flush到磁盘上,下次启动的时候,直接从磁盘上读取数据 上面的四种场景,3,...尽管刷脏页的是常态但是出现下面两种情况,都会影响性能 一个查询要淘汰脏页个数太多,会导致响应时间过长 日志写满,更新全部堵住,写性能跌为0,对敏感业务来说,是不能接受的。...,就可能非常慢,而mysql还有另外一个机制,当一个脏页要被刷到磁盘的时候,发现旁边的数据页也是脏页,也会把这个脏页一块刷到磁盘,这种机制可能会导致,很多脏页一起被刷新到磁盘,从而影响性能,对应的控制参数是
为什么会出现上面的结果?我们看一下select * from test where val=4 limit 300000,5;的查询过程: 查询到索引叶子节点数据。...肯定会有人问:既然一开始是利用索引的,为什么不先沿着索引叶子节点查询到最后需要的5个节点,然后再去聚簇索引中查询实际数据。这样只需要5次随机I/O,类似于下面图片的过程: ?...,我们需要知道MySQL有没有办法统计在一个sql中通过索引节点查询数据节点的次数。...符合我们的预测。也证实了为什么第一个sql会慢:读取大量的无用数据行(300000),最后却抛弃掉。...而且这会造成一个问题:加载了很多热点不是很高的数据页到buffer pool,会造成buffer pool的污染,占用buffer pool的空间。
GitHub地址:https://github.com/abel-max/Java-Study-Note/tree/master 在MySQL进行数据插入操作时,总是会考虑是否会插入重复数据,之前的操作都是先根据主键或者唯一约束条件进行查询...如何防止MySQL重复插入数据,这篇文章会告诉你 我们这边可以根据插入方式进行规避: 1. insert ignore insert ignore 会自动忽略数据库已经存在的数据(根据主键或者唯一索引判断...如何防止MySQL重复插入数据,这篇文章会告诉你 2. replace into replace into 首先尝试插入数据到表中, 1....如何防止MySQL重复插入数据,这篇文章会告诉你 3. insert on duplicate key update insert on duplicate key update 如果在insert into...如何防止MySQL重复插入数据,这篇文章会告诉你 我们可以根据自己的业务需求进行方法的选择.
2010-05-13 从前和最近,帮人做点东西的时候,都遇到过MySQL与中文不兼容的问题,从前都是凭借尝试与运气解决问题这次好好总结一下: 首先,MySQL默认安装后默认配置的字符集是latin1,不支持中文...,因此必须修改字符集设置,修改方法至少有两种,一种是修改配置文件my.ini,另外一种是使用mysql server instance config wizard这个GUI工具,如下图: [image.png...,这主要是因为这个设置只对后来创建的database和table有效果,对之前创建的数据库和表没有影响。...set "gb2312",alter table table_name character set "gb2312"等来改变原来数据库和表的字符集,但是这个一般都不彻底,如果要彻底,要更改每一列的编码...,使得每个字段的编码都变成支持中文的才能最终解决问题。
领取专属 10元无门槛券
手把手带您无忧上云