导出百万级数据
| 技术方案 第一步:设计数据库,对所有导出任务进行实时记录,也可以采用redis,为了方便数据的持久化,最终采用了mysql数据库的方案。表结构具体包括:ID、用户ID、用户名、发起请求时间、导出具体的参数(包括各个维度的参数选择等,具体根据自身业务而定),任务是否正在处理标识(防止任务多次被处理),导出是否成功标识(可以与前一个用一个字段区分)…
数据库事务和锁
数据库的事务 什么是数据库的事务? 百度百科的解释:数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。 事务的四大特性是什么? 原子性:原子性是指包含事务的操作要么全部执行成功,要么全部失败回滚。…
PHP记录
性能检测 常用的调试检测PHP代码性能的方法有:memory_get_usage可以分析内存占用空间。用microtime函数就可以分析程序执行时间。 // 将字节数转换成MB function memory_usage() { $memory = ( ! function_exists('memory_get_usage')) ? '0' : r…
Nginx限流配置
随着业务的扩散,系统并发越来越高时,有三样利器用来保护系统,分别是缓存、降级和限流。 缓存:缓存是现在系统中必不可少的模块,并且已经成为了高并发高性能架构的一个关键组件,缓存的目的是提升系统访问速度和增大系统处理容量。 降级:这个在天猫双11的时候非常常见,降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。 限流…
gitee命令
Git 全局设置: git config --global user.name "武哥哥" git config --global user.email "631002289@qq.com" 创建 git 仓库: mkdir miaomu cd miaomu git init touch README.md git add README.md gi…
数据量很大,分页查询很慢,有什么优化方案?
在开发过程中我们经常会使用分页,核心技术是使用limit进行数据的读取,在使用limit进行分页的测试过程中,得到以下数据: select * from news order by id desc limit 0,10耗时0.003秒select *…
如何搭建MySQL(双机热备)主从复制、读写分离
为什么会有主从复制与读写分离 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服务器的版本的需求,主从mysql的安装运行版本需一致。 而读写分离就是把对数据库的读操作和写操作分离开,将读写压力分担到多台服务器上…
一个线上环境的大数据表,如何给它加索引?​
要是数据量在10几万以内,那你就可以直接用sql语句 ALTER TABLE table_name ADD INDEX index_name (column_list) 数据量过大时,直接执行加索引操作就会锁表,过大的表可能会达到数小时甚至导致服务崩溃.显然直接ALER表是不可取的。下面是解决该问题的方案 解决方案1 导出原表数据创建新表与原表结构…
自增ID和UUID的区别
自增ID和UUID的区别,自增ID是int类型,UUID是字符串类型 自增ID每次请求增加自增锁,然后拿自增ID,自增ID计算方式:之前的最大ID+步长。拿到自增ID后,会马上释放自增锁,当事务回滚时,id会出现不连续的现象。 UUID比自增ID占用空间更大,操作更复杂。
php设计模式
设计模式六大原则 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭里氏替换原则:所有引用基类的地方,必须能透明地使用其子类的对象依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象,抽象不应依赖细节,细节应该依赖抽象单一职责原则:不要存在多于一个导致类变更的原因。一个类只负责一项职责接口隔离原则:客户端不应该依赖它不需…