数据库
韩某Hyman
Program is zero,but zero is start.
展开
-
如何保障 MySQL 和 Redis 的数据一致性?
实时一致性方案:采用“先写 MySQL,再删除 Redis”的策略,这种情况虽然也会存在两者不一致,但是需要满足的条件有点苛刻,所以是满足实时性条件下,能尽量满足一致性的最优解。最终一致性方案:采用“先写 MySQL,通过 Binlog,异步更新 Redis”,可以通过 Binlog,结合消息队列异步更新 Redis,是最终一致性的最优解。转载 2021-09-12 21:36:01 · 203 阅读 · 0 评论 -
专门写坑,越改越浪费资源?
Model : 仅当成 Eloquent class。Repository : 辅助 model,处理资料库逻辑,然后注入到 service。Service : 辅助 controller,处理业务逻辑,然后注入到 controller。Controller : 接收 HTTP request,调用其他 service。Presenter : 处理显示逻辑,然后注入到 view。原创 2022-09-24 22:00:00 · 214 阅读 · 0 评论 -
怎么解决服务端重复更新的问题?
核心还是锁,数据库锁或者是文件锁,redis 锁,还有就是队列,串行化更新。并发不大,mysql 悲观锁完全可以解决,并发比较大的话,就用 redis 分布式锁,并发特别大,建议两者并用。不过设计的时候需要考虑死锁的问题。原创 2019-10-28 19:45:40 · 1427 阅读 · 1 评论 -
统计数据到底怎么处理比较好?
实时查。维护亢余字段。建立一个统计表,定时去跑脚本更新数据,数据取的是这个统计表。es 数据统计。原创 2020-10-31 18:03:59 · 868 阅读 · 0 评论 -
MySQL 规约(转自阿里巴巴开发手册)
最近一直在反思,感觉自身在规范化方面还是做得不好,最近也在看相关资料,努力充充电。一、建表规约 【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 表示否),此规则同样适用于 odps 建表。 说明:任何字段如果为非负数,必须是 unsigned。 【强制】表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考转载 2020-10-11 20:20:11 · 352 阅读 · 0 评论 -
MySQL创建高性能索引
mysq索引的基础和类型概念、理解:MySQL官方对索引的定义:索引(index)是帮助mysql高效获取数据的数据结构。所以索引的本质是一种数据结构。索引类似于书籍的目录,要想找到一本书的某个特定主题,需要先查找书的目录,定位对应的页码。存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行。数据库系统在存储数据之外,还维护着满足特定查找算法的数据结构。这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种原创 2017-03-23 21:26:25 · 10291 阅读 · 0 评论 -
B-tree、B+tree详解(三)聚簇索引与非聚簇索引
聚簇索引(Clustered Index)和非聚簇索引(Non- Clustered Index)最通俗的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的索引顺序与数据物理排列顺序无关。举例来说,你翻到新华字典的汉字“爬”那一页就是P开头的部分,这就是物理存储顺序(聚簇索引);而不用你到目录,找到汉字“爬”所在的页码,然后根据页码找到这个字(非聚簇索引)。聚簇索引的唯一性正式聚簇索引的顺序就是数据的物理存储顺序,所以一个表最多只能有一个聚簇索引,因为物理存储只能有一个顺序。正因为原创 2019-08-28 10:35:40 · 2930 阅读 · 0 评论 -
B-tree、B+tree详解(一)概念与查找
前言B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。详情请查看上一篇文章(二叉查找树与平衡二叉树)!概念B-tree(多路搜索树,平衡多路查找树,并不是二叉的):是一种常见的数据结构。相对于二叉,B-tree的每个内结点有多个分支,即多叉。B+tree:与B-tree的树结构类似,是在B-原创 2019-08-15 19:50:09 · 2982 阅读 · 0 评论 -
二叉查找树与平衡二叉树
最近在恶补高级数据库方面的知识,发现大学时学的数据结构什么的都忘了,从最基础的二叉树开始吧。概念二叉查找树:又称二叉排序树(Binary Sort Tree)或二叉搜索树(Binary Search Tree)。平衡二叉树:(Balanced Binary Tree)它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。详解二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。如下图所示就是一棵二叉查找树原创 2019-08-15 15:26:41 · 2114 阅读 · 0 评论 -
PDO出现“could not find driver”解决办法
在调试一个PHP程序时,报了这个错误, could not find driver这句话的大概意思是: 没有找到驱动。原来我的这个程序中用到了PDO对象,连接mysql。而在PHP的默认设置中,只打开了php_pdo 模块, 没有打开php_pdo_mysql模块.所以才会出现找不到驱动程序的错误.原创 2017-03-24 14:14:42 · 1765 阅读 · 0 评论 -
常见的数据结构及其特征
常见的数据结构有stack、heap、list、linkedlist、doubly-linked-list、queue、array(vector)等原创 2017-03-23 15:39:21 · 4269 阅读 · 0 评论 -
B-tree、B+tree详解(四)使用场景
B-tree和B+tree的使用场景文件系统和数据库系统中常用的B/B+ 树,他通过对每个节点存储个数的扩展,使得对连续的数据能够进行较快的定位和访问,能够有效减少查找时间,提高存储的空间局部性从而减少IO操作。他广泛用于文件系统及数据库中,如:Windows:HPFS 文件系统Mac:HFS,HFS+ 文件系统Linux:ResiserFS,XFS,Ext3FS,JFS 文件系统数据库:ORACLE,MYSQL,SQLSERVER 等中原创 2019-08-28 20:16:18 · 1132 阅读 · 0 评论 -
《大型网站技术架构核心原理与案例分析》读后感
传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求;功能性需求也许还有“人月神话”聊以自慰,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。IT系统应用于企业管理已有超过半个世纪的历史,人们在这方面积累了大...原创 2020-02-20 14:08:12 · 682 阅读 · 0 评论 -
B-tree、B+tree详解(二)插入与删除
B-tree关键字插入操作生成从空树开始,逐个插入关键字。但是由于B-树节点关键字必须大于等于[ceil(m/2)-1],(其中ceil(x)是一个取上限的函数)所以每次插入一个关键字;首先在最底层(叶子节点那一层)的某个非终端节点中添加一个“关键字”,该结点的关键字不超过m-1,则插入完成;否则要产生结点的“分裂”,将一半数量的关键字分裂到新的其相邻右结点中,中间关键字上移到父结点中。示例插入以下字符字母到一棵空的B 树中(非根结点关键字数小了(小于2个)就合并,大了(超过4个)就分裂):原创 2019-08-28 06:28:09 · 9522 阅读 · 1 评论 -
API集成测试问题2:Expected status code 200 but received 500. Failed asserting that false is true.
接上文,之前的错误消失了,出现了新的问题如下:PHPUnit 8.5.0 by Sebastian Bergmann and contributors. ...原创 2020-01-09 20:30:12 · 2242 阅读 · 0 评论 -
访问API时报错:QueryException could not find driver
代码搬在ubuntu服务器上时报的错。原因未设置好php扩展。服务器和命令行使用php 的配置是有差异的,这也是为什么 服务器没有报错,但是命令行出错.phpinfo() 和php -ini 可以比较 php -m 没有pdo模块 但是phpinfo()是有的解决方法1、找到php配置文件vim /etc/php/7.0/apache/php.ini2、在880行左右...原创 2019-10-25 16:57:34 · 845 阅读 · 0 评论 -
API集成测试问题1:could not find driver
进行API集成测试时,碰到如下问题:There was 1 error:1) Tests\Feature\ExampleTest::testBasicTestIlluminate\Database\QueryException: could not find driver (SQL: PRAGMA foreign_keys = ON;)......Caused byDoctrin...原创 2020-01-09 19:52:38 · 1200 阅读 · 0 评论 -
5.7部分版本mysql对双引号的表名和字段,执行不成功
在5.7.23版本mysql用navicat创建的备份,在5.7.20版本mysql上还原备份时,执行不成功。主要是备份的sql语句在表名和字段上加了双引号““,5.7的有些版本默认不支持。首先执行:SET SESSION SQL_MODE=ANSI_QUOTES;然后再执行备份。若不成功,可提取出备份文件的sql语句,单独修改执行...原创 2019-12-16 11:38:04 · 1423 阅读 · 0 评论 -
MySQL查询默认排序与order by排序
最近发现一个平时经常忽略的问题,就是MySQL查询出来的结果的排序问题。之前一直认为,如果在sql语句中没有加特定的order by条件,那么查询出来的数据就应该是按照主键(即插入顺序)排序的。但是,今天在项目中拿数据时发现并没有按照“我以为”的方式排序,就研究了下,发现按照什么方式排序与所查询的字段、索引等都有关系的。因为项目中基本都使用InnoDB引擎,所以就不考虑其他引擎了,自己测试...原创 2018-08-05 18:41:46 · 16221 阅读 · 4 评论 -
MySQL默认值NULL、空值、Empty String的区别,如何选择?
工作一年左右了,发现其实工作中除了需要实现业务代码外,更多的是与数据库打交道。最近因为项目需要,我也逐渐参与进入数据库的设计,从而发现了很多之前没有过多注意的问题。回想这一年来,写博客的次数屈指可数,现在想重新拾起,所以打算从数据库方面入手,先总结一个比较简单但非常常用的知识点——mysql中字段默认值的问题。我们可以看到,默认值的设置主要分为三种:空值,空白,即什么都不填,等同于...原创 2018-07-30 11:57:54 · 12631 阅读 · 1 评论