mysql
文章平均质量分 66
qq_540616979
我是一颗小小小草
展开
-
细说Mysql MVCC多版本控制
细说mysql MVCC多版本控制具体实现方案跟查找流程原创 2022-06-28 17:13:26 · 12179 阅读 · 0 评论 -
2021百度Apollo智能汽车 PHP面试题
1:php 中unset() 的作用;2:php 中的基本数据类型3:php常用的方法;4:Abstract 关键字使用5:php 5.x 跟7.x 区别,底层原有何优化;6:fpm 是什么?7:fpm 的大体架构8:nginx 跟 fpm的通信方式9:nginx Work进程数量配置10:403端口有什么特别11:Http 协议状态码,项目实践中50x 的状态码情况有哪些12:Https 的加密过程,常见的网络攻击有哪些13:tcp/ip 协议实现socket 客户端跟服务端(没明原创 2021-06-18 17:00:43 · 6298 阅读 · 2 评论 -
Swoole数据库连接池分析及实现
使用PHP swoole 由于其内存常驻及协程特性,一般是需要使用数据库链接池来减少链接创建的开支的,一个连接池的实现难点在哪,下面分析1:如何判断是否该获取新的链接?A:默认规则一个协程对应一个数据库连接,同一个协程里应该返回同一个链接,即保存链接时应该以协程id为key;2:如何判断连接是否被使用?在获取连接时我们是不能把正在使用的连接给丢给别的协程的,不然就出现数据混淆的风险,在获取数据库连接对象时应该保存该连接被使用的标记,当协程结束时 (Coroutine::defer 注册回调函数)原创 2021-04-26 14:08:26 · 50012 阅读 · 0 评论 -
PHP高并发项目性能优化及接口安全实践(企业实践)
记录之前公司微信投票项目性能优化过程及安全相关项目:微信投票,依赖于微信授权框架:yaf,php 7.0规则:每人每天30票(未绑定手机的20票,可以无限送礼,新用户进入直接微信授权后添加用户即可获得20票)已有用户数:50w+原始方案:LNMP php模板渲染高并发页面:投票主页,选手详情页面(含投票活动信息,选手信息,票数,礼物等)压力并发:单机+单库 (8pvc 16g) QPS<150公司要求:QPS 3000+,投票时间一个月,不缺钱优化方案:一:架构修改1:数原创 2021-04-21 15:11:35 · 32928 阅读 · 0 评论 -
Mycat 实现mysql读写分离配置
之前项目中有主从复制,读写分离的场景,mycat 作为数据库分库分表中间件,这里记录一波使用操作官网:mycat官网一:环境&安装环境:jdk 1.8+ centos首先更新已安装的包:yum update查看系统当前的java版本:java -version输入以下命令,以查看可用的JDK软件包列表;yum search java | grep -i --color JDK选到自己要的版本安装yum install java-1.8.0-openjdk.x86_64原创 2021-04-21 11:04:34 · 3547 阅读 · 0 评论 -
乐观锁与悲观锁使用场景解读
乐观锁与悲观锁是流程控制的方式,不是锁的实现,在mysql 中写锁理论上都是悲观锁乐观锁:认为事务流程中资源冲突的概率小,不会预先锁定需要的资源,只有在最后提交时校验资源的版本是否一致,一致则修改,不一致则提示失败悲观锁:事务开始则直接锁定所有的资源,这时外部想再获得对应资源则需要等待,并发性比较低,一致性比较强,像mysql 中的myisam 引擎就是悲观锁场景例如: 给用户增加积分会有如下几步1:查找用户信息2:计算用户积分3:修改用户积分使用乐观锁的流程是:全程不用加锁,计算完用户积原创 2021-02-02 15:59:25 · 21882 阅读 · 0 评论 -
集成EasySwoole+LayuiAdmin PHP 框架
最高效简单的PHP 框架主要实现:添加easyswole 必要的类库跟方法,对接前端跟后端接口,实现后台角色跟权限管理运行环境(参照EasySwoole 文档)保证 PHP 版本大于等于 7.1保证 Swoole 拓展版本大于等于 4.4.15需要 pcntl 拓展的任意版本使用 Linux / FreeBSD / MacOS 这三类操作系统使用 Composer 作为依赖管理工具主框架: easyswoole 参考文档 easyswoole文档后台管理: layuimin 采用前原创 2020-12-18 17:21:53 · 6877 阅读 · 0 评论 -
PHP 实现异步定时多任务消息推送(企业实用级)
PHP 实现 异步多任务模板消息任务推送实现功能点1:异步发送,添加端只管添加,不需要考虑发送2:定时定点,误差不超过5s(任务多会排队)3:保证每条消息发送成功(尝试N次后自动丢弃)4:可设置多线程5:保证不重复发送实现原理crontab(定时执行) +php(实现推送)+mysql(消息存储)步骤1:创建消息表,保存消息(友情提示 注意索引)CREATE TABLE `sent_tpl_task` ( `id` int(11) NOT NULL AUTO_INCREMENT,原创 2020-07-28 16:21:51 · 32341 阅读 · 0 评论 -
200w数据分析+实测深入理解sql索引使用
深入分析sql的执行user表:age,name,weight add_time desc 1000w数据执行sql select * from user where age>20 and weight<70 order by add_time limit 500000 100;1: A:无索引情况 全表扫描 就是加载整个表的数据 根据条件逐条判断是否符合,最后将符合条件的数据根据时间排序,最后根据排序文件跳过50w 取到100条问题:1加载整个表数据大,像desc描述可能是长字符串,原创 2020-07-10 18:07:26 · 649 阅读 · 0 评论 -
Myql事务与锁
事务简单的讲就是保证一组sql 能同时成功 或者失败mysql 只有Innodb 支持事务事务回滚原理通过undo-log 实现,大概意思就是,事务内执行的更新 删除 新增sql 都会记录一条类似逆向的sql 一旦需要回滚则执行逆向sql事务特性:ACID原子性: 事务内的sql执行状态是统一的 要不都成功 要不都失败;通过redo-log 日志实现,只有提交后才持久化到磁盘,未提交的都记录为日志隔离性: 指多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果;通过锁技术实现原创 2020-06-22 16:59:00 · 6674 阅读 · 0 评论 -
Mysql索引基础理解
理解索引前要先理解下面的概念索引是什么索引是一个文件,一个表可以有多个索引文件,正常查找数据时查询优化器判断可以使用索引并且选择索引后会优先读取索引文件,根据索引找到对应数据或者数据ID后再做进一步筛选索引方式1:hash:无序索引,不能范围查找,不能用于排序,使用比较少,缺点较多一般纯内存引擎会用2:B+树:非叶子节点不保存数据,只保存索引key,只有叶子节点保存数据,每次查找都要至叶子节点才能返回数据,一般4层深度可索引千万级别数据(每个数据页16k,行数据1kb,一个索引key16字节的情况原创 2020-06-19 17:19:08 · 6163 阅读 · 0 评论 -
MYSQL 主从复制配置
1:修改主服务器配置log-bin=mysql-bin //开启日志binlog_format=mixed //这里使用mixed,保证从服务器也一样的格式server-id=1 //这个id不能跟从服务器重复binlog-do-db = test1,test2 //需要记录log的数据库名(默认所有的,这个参数设置会直接影响到bin-log的记录,没在里面的数据库是不会有bin-log的,如果需要记录bin-log 但不需要同步到从数据库可以在从数据库设置参数,看下面)binlog-ignor原创 2020-06-06 16:24:47 · 6683 阅读 · 0 评论