
mysql
对MySQL数据库的操作
菜蜗牛很菜
数据结构+算法=程序
DRY-Don't Repeat Yourself
展开
-
mysql分组后只取每组的第一条
order by limit 再group by原创 2022-04-08 12:26:36 · 6470 阅读 · 0 评论 -
MySQL left查前缀
SELECT LEFT(see.gate_name,2) gate,see.device_id deviceId,see.gate_name gateName FROM bs_road_gate_info_t see WHERE see.tenant_id = 6原创 2022-03-22 18:01:30 · 455 阅读 · 2 评论 -
Lock wait timeout exceeded; try restarting transaction
在更新一条数据时,前端页面一直加载转圈,之后后台报错Lock wait timeout exceeded; try restarting transaction解决办法:select * from information_schema.INNODB_TRX;找到trx_mysql_thread_id对应的值:如13336,之后结束该进程kill 13336也可以增加锁等待时间SHOW VARIABLES LIKE ‘innodb_lock_wait_timeout’;set innodb_原创 2020-11-27 16:37:19 · 106 阅读 · 0 评论 -
MySQL索引建立和优化笔记
查询语句的执行计划explain从低到高的顺序:ALL(全表扫描)、【避免】index(全索引扫描)【避免】range范围扫描ref非唯一索引扫描、eq_ref唯一索引扫描const结果只有一条的主键或唯一索引扫描[索引失效]1索引列上做了计算 函数 类型转换等操作2like匹配使用了前缀匹配符"%ab"3字符串不加引号导致类型转换查询过程需要扫描整个索引并回表,代价高于直接全表扫描可能出现全表扫描(索引列上用了!= >= <= or in,索引列上用了 is nul原创 2020-10-21 09:28:47 · 110 阅读 · 0 评论 -
mysql开发规范笔记
1表越窄越好2表越小越好3请求够高效1表越窄越好设计表字段的时候,选择的数据类型足够用就好show table status查看表的统计信息Avg_row_length值超过100字节需要注意并优化2表越小越好好的架构要配合业务的需求用尽可能小的数据量或者让线上的业务表它的数据量尽可能小,尽可能让线上生产环境里面的这些热表(经常使用的表足够小减少IO操作代价)解决方案:分库分表、冷热数据分离判断手段:行数尽可能不要超过5000万行宽表<=50万3请求要足够高效每条SQL尽快.原创 2020-10-14 20:13:39 · 132 阅读 · 1 评论 -
拷贝一张表到新表
create table t_newtable as (select *from t_oldtable);只拷贝表结构create table t_newtable like t_oldtable;原创 2020-08-08 20:13:07 · 151 阅读 · 0 评论 -
MySQL语句的执行顺序记忆
MySQL语句的执行顺序记忆from join 与onwhere子句排其次分组groupby ,having来凑数选择和排序(Select orderby )limit排最后原创 2020-08-04 21:44:59 · 172 阅读 · 0 评论 -
改表名
alter table user rename student;原创 2020-06-14 20:16:51 · 146 阅读 · 0 评论 -
mysql赋权
权限管理show privileges;show grants;help grant;mysql> grant select on *.* 'root'@'%' identified by '123456' with grant option;mysql> show grants for 'root'@'%'或者create user 'root'@'%' identified by '123456' ;grant select on *.* to 'root'@'%' w原创 2020-01-11 11:10:16 · 621 阅读 · 0 评论 -
设置mysql字符集
查看字符集show character set查看字符序show collation;_ci表示大小写不敏感,_cs敏感show global variables like ‘%character%’;服务器vim /etc/my.cnf[mysqld]character_set_server=utf8collation_server=utf8_general_ci数据库...原创 2020-01-10 20:33:49 · 120 阅读 · 0 评论 -
sql进阶
case whenselect case when column is null then 0 else column end from tableName;union,union allselect *from student union select * from teacher;查询插入insert into teacher select *from student;忽略插入...原创 2020-01-10 10:42:57 · 96 阅读 · 0 评论 -
安全清空慢查询日志
1临时关闭慢查询日志set global slow_query_log=0;2对慢查询日志改名备份mv mysql_slow.log slow_01.log3开启慢查询日志set global slow_query_log=1;原创 2020-01-07 20:10:28 · 261 阅读 · 0 评论 -
插入数据性能差异
选择不同的引擎导致的性能差异是否开启binlog也会影响插入INNODB关闭自动事物提交对插入性能也有影响原创 2019-12-24 20:35:14 · 208 阅读 · 0 评论 -
数据库索引
索引是一种单独的,物理的对数据表中一列或多列的值进行排序的一种存储结构索引提供指向存储在表中的指定列中的数据值的指针索引的存在是为了提高查找速度索引是在存储引擎中实现的,不同的存储引擎,会使用不同的索引INNODB,MyISAM的索引都采用了B+树数据结构...原创 2019-12-24 20:32:54 · 110 阅读 · 0 评论 -
索引操作
查看索引show index from tableName;删除索引alter table tableName drop index indexName;drop index indexName on tableName;添加索引create table tableName(id intname varchar(20)index indexName(columnName););...原创 2019-12-24 20:29:52 · 168 阅读 · 0 评论 -
memory引擎
memory引擎(堆内存)特点数据是放在内存中的,并且默认使用hash索引,memory类型的表访问非常快服务关闭后表中的数据会丢失掉适用场景内存变化不频繁的代码表,或者作为统计操作的中间结果表目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出数据是临时的,而且必须立即可以得到,那么就可以放在内存中存储在memory表中的数据如果突然间丢失...原创 2019-12-22 00:22:35 · 197 阅读 · 0 评论 -
Archive引擎
用于数据归档,压缩比非常高,用来存储历史数据由于它不支持索引同时也不能缓存索引和数据,所以它不适合作为并发访问表的存储引擎archive存储引擎使用行级锁来实现高并发插入操作,但不支持事务提供高速的插入和压缩功能...原创 2019-12-22 00:21:59 · 368 阅读 · 0 评论 -
Blackhole引擎(黑洞引擎)
适用场景验证dump file语法的正确性使用blackhole引擎来检测binlog功能所需的额外负载原创 2019-12-22 00:21:32 · 2898 阅读 · 0 评论 -
Head First设计模式笔记
导言避免一些尴尬的耦合错误发觉模式大师的秘密探究星巴兹咖啡如何以装饰者模式让自己的股价翻倍学习为何朋友们对工厂模式的认知可能有错把事关紧要的模式直接装进脑海里瞧瞧jim为何拒绝继承后改善了爱情生活所有的设计都应该尽量保持简单,只有在需要实践扩展的地方,才值得使用复杂性和模式四人组的建议今天的模式比四人组书中的更多,一并学会它们吧为实际需要的扩展使用模式.不要只是为了假想的需要...原创 2019-12-22 00:20:27 · 361 阅读 · 0 评论 -
MyISAM
MyISAM存储引擎独立于操作系统,数据文件可以跨平台使用采用表级锁来提供并发支持能力执行读取操作的速度很快,而且不占用大量的内存和存储资源数据和索引分开存储,减少操作系统的大文件访问情况,以提高性能单独存储了表的行数数据,统计行数的不用遍历数据不支持事务...原创 2019-12-21 23:55:09 · 1430 阅读 · 0 评论 -
innodb适用场景
需要频繁并发更新的表,适合处理多并发的更新请求需要事务支持的场景需要从灾难恢复(bin-log日志)的场景需要外键约束,只有innodb支持外键MySQL5.6以上版本默认的数据库引擎是innodb引擎...原创 2019-12-21 23:54:48 · 468 阅读 · 0 评论 -
行级锁
set autocommit=falseselect * from tableName where id=9 for update;commit;行级锁失效情况:扫描不确定的范围,模糊匹配原创 2019-12-21 23:30:25 · 128 阅读 · 0 评论 -
INNODB引擎
主要特点提供了具有提交,回滚和恢复崩溃能力的事务安全(ACID)存储引擎支持行级锁,减少锁定空间,增加了多用户并发时的性能支持外键,增强数据约束,提高关联查询性能为处理巨大数据量提供最大化性能设计,在主内存中缓存数据和索引而维持它自己的缓冲池数据和索引存储在一起,提供快速查询能力,减少IO访问事务set autocommit=falseset autocommit=true对...原创 2019-12-21 22:57:41 · 91 阅读 · 0 评论 -
数据库引擎
数据库存储引擎Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户可以根据自己的需要编写自己的存储引擎查看数据库支持的引擎show engines;查看数据表的引擎show create table tablename;修改默认引擎:Linux ...原创 2019-12-21 20:48:02 · 122 阅读 · 0 评论 -
数据库性能优化法则笔记
数据库IO{CPU 缓存 内存}:执行,缓存数据访问,比较,排序,事务检测,SQL解析,函数或逻辑运算{SSD硬盘,普通硬盘}:执行:数据访问,数据写入,日志记录,大数据量排序,大表连接{网卡}:执行:结果数据传输,sql请求,远程数据库访问数据库访问优化漏斗法则减少数据访问(减少磁盘访问)返回更少数据(减少网络传输或磁盘访问)减少交互次数(减少网络传输)减少服务器CPU开销(减少...原创 2019-12-21 20:18:51 · 129 阅读 · 0 评论 -
性能优化笔记
适度优化,切记过度优化先优化最大瓶颈,事半功倍依据数据而不是凭空猜测性能优化是持久战,道高一尺魔高一丈深入业务原创 2019-12-21 19:55:53 · 91 阅读 · 0 评论 -
访问数据库流程
用户|浏览器中输入网址|域名解析|建立网络连接|web服务器|应用服务器|servlet/filter|Controller|建立数据库连接|发送sql指令到数据库|数据库处理sql语句|数据库返回结果数据|服务层对结果进行处理|生成响应数据|将响应数据返回给浏览器|web页面给用户...原创 2019-12-21 19:46:30 · 682 阅读 · 0 评论 -
容量评估
数据库服务器硬件性能指标磁盘IO性能内存容量CPU网络吞吐量磁盘容量数据业务特点OLTP/OLAPOLTP面向广大用户,高并发,较短事务操作互联网应用绝大多数属于OLTPOLTP看重服务器CPU,写事务多或内存不够则依赖磁盘ioOLAPanalytical面向内部人员,大规模复杂查询OLAP着重磁盘扫描的IO能力,部分依赖内存排序并发请求读写比例多读场景相关...原创 2019-12-18 17:12:43 · 615 阅读 · 0 评论 -
schema设计审核
schema设计审核表和字段命名是否规范字段类型,长度设计是否合适表关联关系是否合适主键,更新时间保留字段等是否符合要求约束,默认值等配置是否恰当了解业务,表数据量,增长模式数据访问模式,均衡度根据业务需求,表分区,数据周期sql语句审核sql语句的执行频率表上是否有合适的索引单次执行的成本执行模式,锁情况分析关注事务上下文...原创 2019-12-18 16:35:35 · 88 阅读 · 0 评论 -
时间戳
表的第一个timestamp类型字段在写入时如果不填值会自动写入系统时间戳表的第一个timestamp类型字段每次记录发生更新后会自动更新原创 2019-12-18 15:37:40 · 139 阅读 · 0 评论 -
分区
分区表与数据淘汰range分区适合数据需要定期过期的大表单个分区扫描迁移数据到历史库避免全表扫描io开销删除单个分区非常高效list分区适合基于地区等方式垂直拆分数据的方式清理节点上不要的数据非常高效hash分区水平拆分表...原创 2019-12-18 15:19:19 · 96 阅读 · 0 评论 -
事务
事务与并发写某个正在更新的记录在提交或回滚前不能被其他事物同时更新先加锁后修改 等待锁释放事物的ACID原子性Atomic:要么全部执行,要么全部不执行,中途数据库发生异常,未提交的事物都被回滚一致性Consistency:数据库从一种正确状态转为另一种正确状态,数据库在修改时保证数据的正确性合理性一致性隔离性Isolation事务正确提交完成前,中间...原创 2019-12-18 12:04:41 · 108 阅读 · 0 评论 -
字段约束
字段约束mysql四种字段约束主键约束 primary key 字段值唯一,且不能为null非空约束 not null 字段不能为null唯一约束 unique 字段值唯一可以为空外键约束 foreign key 关联数据库(不推荐使用容易闭环)...原创 2019-12-18 12:01:01 · 173 阅读 · 0 评论 -
索引
创建索引索引使用原则数据量很大,而且经常被查询的数据表设置索引索引只添加在经常被用作检索条件的字段上面原因:索引维护由数据库自动完成,插入修改删除每一个索引都变成一个内部封装的事务,索引越多,事务越长,代价越高,索引越多对表的插入和索引字段修改就越慢创建主键索引alter table courseadd primary key (cno);12创建唯一索引alter tab...原创 2019-12-18 12:00:01 · 93 阅读 · 0 评论 -
数据库数据表操作DDL
数据库操作(DDL)创建数据库create database db0905;1查看所有数据库show databases ;1删除数据库drop database db0905;15数据表操作(DDL)创建数据表执行快捷键Ctrl+entercreate table animal(name varchar(20) comment ‘名称’,age int comme...原创 2019-12-18 11:59:12 · 159 阅读 · 0 评论 -
MySQL数据类型
1.MySQL字段类型类型 取值范围CHAR(N) 0~255VARCHAR(N) 0~65536TINYBLOB 0~255BLOB 0~65535MEDUIMBLOB 0~167772150LONGBLOB 0~4294967295TINYTEXT 0~255TEXT 0~65535MEDIUMTEXT 0~167772150LONGTEXT 0~4294967295V...原创 2019-12-18 11:40:35 · 127 阅读 · 0 评论 -
mysql数据对象
MySQL8.0原创 2019-12-04 19:37:48 · 151 阅读 · 0 评论 -
AES数据加密
加密,将结果用16进制显示原数据(“123456”),加密密钥(“password”)select hex(aes_encrypt('123456','password'));解密select aes_decrypt(unhex("21EEC1D1D074555D1190649EB2B803E5"),"password");...原创 2019-11-26 17:26:58 · 213 阅读 · 0 评论 -
int(11)和int(21)的区别
int(11)和int(21)的区别,没什么区别,只是显示的位数不一样原创 2019-11-11 10:28:54 · 252 阅读 · 0 评论 -
mysql数据库笔记
数据库–查找磁盘物理文件 IO操作CPU–缓存(L1-L2-L3)–内存–SSD–网络–硬盘数据库IO响应时间带宽吞吐量60GB/s数据库操作空间CPU,cache,内存:缓存数据访问,比较,排序,事物检测,SQL解析,函数,逻辑运算SSD,机械硬盘:数据访问,数据写入,日志记录,大量数据排序,大表连接网络:结果数据传输,SQL请求,远程数据访问数据库访问原则1减少数据...原创 2019-11-08 20:33:36 · 322 阅读 · 0 评论