mysql
文章平均质量分 65
qq_19557947
这个作者很懒,什么都没留下…
展开
-
mysql参数优化
InnoDB内存优化InnoDB用一块内存区做IO缓存池,该缓存池不仅用来缓存InnoDB的索引快,而且也用来缓存InnoDB的数据块。innodb_buffer_pool_size该变量决定了InnoDB存储引擎表数据和索引数据的最大缓存区大小。在保证操作系统及其他程序有足够的内存可用的情况下,innodb_buffer_pool_size的值越大,缓存命中率越高,访问InnoDB表需要的磁盘I/O就越少,性能就越高。innodb_buffer_pool_size=512MI.原创 2021-05-20 11:14:52 · 162 阅读 · 0 评论 -
MySQL主从复制原理
为什么要主从复制1,在业务复杂的系统中,有这么一个场景,有一句SQL需要锁表,导致暂时不能使用读的fy一个场景,有一句SQL需要锁表(排它锁),导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。2,做数据的热备,主机当即后能够及时替换主库,保证业务员的可用性。3,架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做对库的存储,降低磁盘I/O访问的评率,提高单个机器的I/O原创 2021-04-30 01:45:39 · 225 阅读 · 1 评论 -
MySQL锁及事务
Mysql锁表级锁:对整张表加锁。开销小,加锁快;不会出现思索;锁定粒度大,发生锁重复的概率最大,并发度最低。行级锁:对某行记录加锁。开销大,加锁慢;会出现死锁;锁定粒度小,发生锁重复的概率最低,并发度也最高。页面锁:开销和加锁时间介于标锁和行锁之间;会出现死锁;锁定粒度介于标锁和行锁之间,并发度一般。MyISAM:不支持事务,支持全文索引,不支持行锁。InnoDB:支持事务,支持行锁MyISA支持表级锁,并且支持两种锁模式对MyISAM表的读操作(共享锁),不会阻塞其他进程对同原创 2021-04-21 04:18:38 · 177 阅读 · 0 评论 -
高并发下余额扣减
添加数据库行锁当请求A执行是 先加入锁阻塞 请求B直到 请求A完成之后 请求B才继续执行//开始事务begin;//消费金额$spend = 10;//查询用户余额$user = select id,fee from users where id = 12 for update;//计算金额$newFee = $user['fee'] - $spend;//...检查余...转载 2020-01-07 10:45:40 · 1917 阅读 · 0 评论 -
批量更新和插入mysql数据库
项目需要通过脚本批量插入和更新数据传统的循环单条插入和更新非常影响性能,故需要批量插入(1条SQL批量插入)和批量更新(1条SQL批量更新) /** * 批量赋值 * @param array $data * @return bool */ public static function batchInsert(Array $data)...原创 2019-07-25 20:24:51 · 336 阅读 · 0 评论 -
mysql存储过程批量更新余额并记录日志
项目需要批量导入结算数据,更新余额并记录日志mysql存储过程不支持数组参数,故需要将相关参数转成逗号分隔字符串,通过循环并对每一个循环加上事务以保证数据更新的完整性。非动态表名DELIMITER //CREATE PROCEDURE `proc8`(IN orderIdsStr text,IN orderReturnsStr text,IN orderUidsStr text...原创 2019-07-25 19:38:01 · 1007 阅读 · 0 评论 -
MySQL锁
mysql锁表级锁:开销小,加锁块;不会出现死锁,锁定颗粒度大、发生锁冲突的概率最高,并发度最低行级锁:开销大,加锁慢,会出现死锁,锁定颗粒度最小、发生锁冲突的概率最低,并发度最高页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁,锁定颗粒度介于表锁和行锁之间,并发度一般Mysql表级锁的锁模式(MYISAM)表共享锁和表独占写锁对myisam的读操作,不会阻塞其他...原创 2019-04-02 18:38:32 · 152 阅读 · 0 评论 -
MySQL横竖表转换
现有一张竖表table2要将上表转成如下横表table2此时要用到mysql的case whenselect username,sum(case course when '语文' then grade else 0) as chinese,sum(case course when '数学' then grade else 0) as math,sum(case cour...原创 2019-03-30 11:23:24 · 1047 阅读 · 0 评论 -
Laravel SQL用指定的字段作为查询结果的key
$roles = Role::all()->keyBy('name')->toArray();//如果不是使用Eloquent$roles = collect(DB::table('role')->get())->keyBy('name')->toArray();原创 2018-06-06 16:51:09 · 8637 阅读 · 0 评论 -
mysql引擎
MyISAMMyISAM表是独立于操作系统的,这说明可以轻松的将其从windows移植到Linux每当我们建立一个MyISAM引擎表时,就会在本地磁盘创建三个文件,文件名就是表名例如:我们建一个MyISAM引擎的tb_demo表,就会产生三个文件1,tb_demo.frm 存储表定义2,tb_demo.MYD 存储数据3,tb_demo.MYI 存储索引MyISAM无法转载 2017-01-11 15:20:52 · 213 阅读 · 0 评论 -
mysql数据类型
mysql中数据类型大的方面来分可以分为:日期和时间,数值以及字符串日期和时间mysql数据类型含义date3字节,日期,格式:2017-01-11time3字节,时间,格式:16:26:10datetime8字节,日期时间,格式:2017-01-11 16:26:10timestamp4字节,自动存储记录转载 2017-01-11 16:19:08 · 160 阅读 · 0 评论 -
mysql字段属性
1,auto_incrementauto_increment能为新插入的行赋一个唯一的整数标志符mysql要求将auto_increment属性用于作为主键的列,此外,每个表只允许有一个auto_increment列例:id smallint not null auto_increment primary_key2,binarybinary属性只用于char和varch转载 2017-01-11 18:17:55 · 434 阅读 · 1 评论 -
SQL逻辑查询语句执行顺序
(7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) LIMIT 上述SQL的执行顺序1,执行FROM语句FROM告诉我们最开始从哪个表开始。经过FROM转载 2017-01-17 18:20:59 · 241 阅读 · 0 评论 -
Mysql索引结构及常见索引的区别
一、Mysql索引主要有两种结构:B+Tree索引和Hash索引Hash索引mysql中,只有Memory(Memory表只存在内存中,断电会消失,适用于临时表)存储引擎显示支持Hash索引,是Memory表的默认索引类型,尽管Memory表也可以使用B+Tree索引。Hash索引把数据以hash形式组织起来,因此当查找某一条记录的时候,速度非常快。但是因为hash结构,每个键只对应一个值...原创 2017-08-09 11:39:43 · 16705 阅读 · 0 评论 -
mysql explain使用
explain select语句重点关注 type和Extra列的结果type即访问类型,从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL 最低级别要使用转载 2017-08-10 15:29:42 · 211 阅读 · 0 评论 -
mysql注入原理及防范
SQL注入原理SQL注入漏洞存在的原因,就是拼接SQL参数例:参数为id$sql = 'select * from test where id='.$_GET['id'];正常输入2则sql为:select * from test where id=2;只会查出id为2的记录黑客输入2 or 1=1则sql为select * from test where原创 2017-09-04 17:21:12 · 1420 阅读 · 0 评论 -
mysql中exists与in的使用
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当exists里的条件语句能够返回记录行时(无论记录行是多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为false如下:select...转载 2017-10-19 14:39:50 · 235 阅读 · 0 评论 -
mysql优化
SQL优化原创 2017-10-18 16:18:39 · 203 阅读 · 0 评论 -
mysql技巧
1,使用强制索引某些字段没有加索引,但需要通过字段查询,可以使用强制索引如下,dateline字段未建立索引,对dateline字段使用强制索引select id from A force(dateline) where dateline>100000;2,按指定字段自定义列表排序order by field('id',5,3,7,1)select * from A原创 2017-10-19 18:12:09 · 223 阅读 · 0 评论 -
PDO从数据库中获取字段,字段被截取为1M(长度为1048576)问题的处理
数据库中有一个字段是longtext存储的字段超过1M时,通过PDO获取该字段时,该字段会被截断为1M(即长度为1048576)该问题是由于PDO的配置问题导致PDO::MYSQL_ATTR_MAX_BUFFER_SIZE PDO的预设缓冲 默认为1M如果PHP编译了mysqlnd扩展,则会导致PDO不支持MYSQL_ATTR_MAX_BUFFER_SIZE的预定义了如果没有编译mysqlnd,没...原创 2018-06-06 15:46:54 · 1220 阅读 · 2 评论 -
mysql创建用户并授权
创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; username即需要创建的用户名hots即用户登录的域名或者IPpassword即创建的用户的登录密码授权:GRANT privileges ON databasename.tablename TO 'username'@'host'原创 2016-10-28 12:32:07 · 287 阅读 · 0 评论