
mysql
自驱
ALOHA HEJA HE
展开
-
为什么数据库关闭默认事务性能会提升
因此,在系统设计上,我们应尽量避免在MySQL中写入事务并关闭MySQL的事务处理功能,以改善MySQL的性能。MySQL中,使用事务处理的数据库查询和操作的性能比不使用事务的查询和操作大大低下,这是因为当 MySQL 开启事务,MySQL 就会多了一些额外的步骤,比如查询时需要检查锁情况,设置锁的范围,维护更新的日志,管理事务的隔离级别,等等步骤,这些步骤会消耗 MySQL 服务器的硬件资源,造成查询操作变慢。原创 2023-03-10 21:05:48 · 279 阅读 · 0 评论 -
[mysql] 深入分析MySQL版本控制MVCC规则--实测 (mysql 8.0 innodb引擎)
【代码】[mysql] 深入分析MySQL版本控制MVCC规则--实测 (mysql 8.0 innodb引擎)原创 2022-11-26 16:32:44 · 533 阅读 · 0 评论 -
【golang_gorm】ErrRecordNotFound 什么情况下返回? one record 还是 slice ?源码给出回答
GORM 中的 queryCallback 方法。从源代码中可以知道,当分析和分配检索到的数据时,如果检索到0行,并且接收到的检索结果不是 Slice 类型的变量(此时它必须是 Sstruct 类型的变量) ,它将抛出 ErrRecordNotfound 错误。从源代码可以看出,在 GORM 中,First 和 Last 比 Find 有更多的限制和默认排序顺序,这三种方法之间没有本质区别。原创 2022-10-22 13:36:24 · 1665 阅读 · 0 评论 -
【mysql】只使用数据库DB如何实现--预定系统(古法)电影院座位预定
这种锁定被称为“独占锁定”。如果用户1优先获取了,A1-A4的行锁,在用户2则无法提交预定订单(因为A3,A4已经被加了排它锁),锁定失败,需要用户2重新选择其他座位;一个用户选择A1至A4发起预定,与此同时,另一个用户选择的座位 A3至 A5发起预定。.........原创 2022-08-27 18:42:37 · 658 阅读 · 0 评论 -
DDIA 设计数据密集型应用 -- 第七章 事务9问
1. 为什么说数据库系统是不可靠的?2. 为什么需要ACID ? BASE又是什么?3. A是什么?Atomicity4. C Consistency 一致性是什么?为什么说不属于ACID呢?5. I 是什么?隔离级别有哪些?race condition 场景6. D Durability write-ahead log 预写日志是什么? 为什么需要预写日志呢?7. 基于TCP链接的事务的实现8. 重试会带来什么问题?...原创 2022-05-10 09:48:55 · 191 阅读 · 0 评论 -
【mysql】慢查询,大数据量查询优化case U CAN LEARN
1 背景如果mysql扫描数据行数W级别(比如2W)但是每行数据都有一个大json平均几十K比如(20K),此时需要qos如果等于2,多少数据会进入内存呢?估算:20,000 * 2 * 20,000 = 800,000,000 byte 即 大约 800M的数据会进去server内存空间; 呕吼,要报警了!!2 问题根据常识线上业务需要的数据量肯定没有这么多,大约10M到80M就已经很多了,所以如何优化呢?3 解决方案步骤:扫描数据过多,大部分数据是无效的,所以 red.原创 2021-11-18 15:33:03 · 1169 阅读 · 0 评论 -
mysql表设计--规范化与Nosql
整个简历可以通过唯一标识符user_id来标识。 first_name 和 last_name 这样的字段在每个用户中只出现一次,所以将其建模为users表中的列。对于多个教育阶段和任意数量的联系信息,即一对多的关系可用多种方式来表示:1 传统的SQL模型(1999之前)将职位、教育、联系方式放到单独的表中,并使用外键引用users表; 2 1999之后的SQL标准增加了对结构化数据类型和XML数据的支持。允许将多值数据存储在单行内,并支持在这些文档中查询和索引; 3 第三个选项是将工作、教育、..原创 2021-10-18 20:17:49 · 175 阅读 · 0 评论 -
命令式和声明式有何区别?
命令式语言告诉计算机以特定顺序执行某些操作。你完全可以推理整个过程,逐行遍历代码、评估相关条件、更新对应的变量,并决定是否再循环一遍。声明式查询语言(SQL或关系代数),直接告诉目标(对外隐藏了数据库引擎的很多实现细节)。NoSQL系统可能会发现自己意外地重新发明了SQL,尽管是伪装的。...原创 2021-10-18 20:14:49 · 785 阅读 · 0 评论 -
存储ID还是字符串?(任何对人类有意义的东西都可能在将来的某个时刻发生变更)
1 简历中region_id 和 industry_id 定义为ID,而不是纯文本字符串形式为什么?2 如果用户界面是可以输入地区或者行业的自由文本字段,则将其存储为文本字符串更有意义。但是地理区域和行业使用的标准化列表,让用户下拉或者自动填充选择会更有优势:1 所有的简历保持样式和输入值一致 2 避免歧义(相同名的城市) 3 易于更新:名字只保存一次,如遇政治事件可以很容易的全面更新 4 本地化支持:标准化列表可以方便的翻译成其他语言 5 更好的搜索支持:地区列表可以将更全的信息编码到原创 2021-10-18 15:36:03 · 336 阅读 · 0 评论 -
golang gorm事务踩坑记
1 源码package gormimport ( "fmt" "regexp" "strings" "gorm.io/gorm/clause" "gorm.io/gorm/utils")// Model specify the model you would like to run db operations// // update all users's name to `hello`// db.Model(&User{}).Update("name",原创 2021-08-02 15:30:40 · 2046 阅读 · 0 评论 -
Mybatis 嵌套list<String>
<resultMap id="UserMap" type="User"> <result column="id" property="id" jdbcType="BIGINT" /> <collection property="names" resultMap="NamesMap" /> <collection property="roles" resultMap="RolesMap" /></resultMap>&l.原创 2021-06-10 10:15:49 · 647 阅读 · 0 评论 -
golang orm 批量删除正确姿势
Batch DeleteThe specified value has no priamry value, GORM will perform a batch delete, it will delete all matched records db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})// DELETE from emails where email LIKE "%jinzhu%";db.Delete(Email{}, "原创 2021-06-09 14:42:10 · 1055 阅读 · 0 评论 -
Mysql 双主相互备份是如何解决循环复制的?
解决方案: 假设A,B 相互备份,A产生的binlog 中携带 serverId=1,发送到B,B解析后执行,执行完毕也会产生binlog原创 2021-06-08 09:54:11 · 550 阅读 · 0 评论 -
Mysql 时间戳格式化输出
select from_unixtime(1622461737)原创 2021-06-04 14:56:20 · 396 阅读 · 0 评论 -
NSInvalidArgumentException mac Sequel Pro 链接数据库崩溃-解决方案
NSInvalidArgumentException-[_NSInlineData isEqualToString:]: unrecognized selector sent to instance 0x604000033360( 0 CoreFoundation 0x00007fff3454832b __exceptionPreprocess + 171 1 libobjc.A.dylib 0x0000.原创 2021-04-07 09:38:18 · 1027 阅读 · 0 评论 -
【Mysql】意向锁
1 意向锁为什么要存在?意向锁主要是解决:表级锁 和 行锁(其他排它锁如间隙锁,next key gap锁)共存问题;2 举例说明事务A锁住了表中的行锁。事务B申请整个表的写锁,表级锁。为了保证A释放后,B才能获取锁,如何让B事务堵塞等待呢?数据库要怎么判断这个冲突呢?1:判断表是否已被其他事务用表锁锁表2:判断表中的每一行是否已被行锁锁住。但是2这一步时间复杂度实在是太高了,因为需要遍历整个表。于是出现了 意向锁。在意向锁存在的情况下,事务A必...原创 2021-02-24 09:35:01 · 367 阅读 · 0 评论 -
【Mysql】quick review 分布式事务 存储 redo undo all-in-one
1 存储引擎存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated1.1 InnoDB(B+树):InnoDB 底层存储结构为B+树, B树的每个节点对应innodb的一个page,page大小是固定的, 一般设为 16k。其中非叶子节点只有键值,叶子节点包含完成数据。适用场景: 经常更新的表,适合处理多重并发的更新请求。 支持事务。 可以从灾难中恢复(通过 bin-log 日志等) 外键约束。只有他支持外键原创 2021-02-19 18:40:10 · 279 阅读 · 1 评论 -
mybatis中大于等于小于等于 在注解中的写法
使用:原符号 < <= > >= & ' "替换符号 < <= > >= & ' "例如:sql如下:where enable = #{enable} and userCreateDate >= #{beginDate} and...原创 2020-10-24 14:18:27 · 1184 阅读 · 0 评论 -
【mybaits】占位符 mysql 注入 #{} ${} 区别 - 源码
@Update(" update test_zw_sql set name = '${updateName}' where id = ${id}")int updateTestAppendStr(@Param("updateName") String updateName, @Param("id") Integer id);@Update(" update test_zw_sql set name = #{updateName} where id = #{id}")int updateTestPa.原创 2020-09-26 18:29:16 · 292 阅读 · 0 评论 -
【mysql】--高性能索引策略(359)
如何高效的使用索引:1 独立的列-->将单独列放在比较符号的一侧; where acrot_id + 1 = 5; error2 索引的选择性: 不重复的索引值 : 数据表记录总数 ,唯一索引的选择性是1; 注意: 计算不同前缀长度的选择性 方法 select count(distinct left(city,7)) / count(*) as sel1原创 2020-08-16 15:13:00 · 204 阅读 · 0 评论 -
【mysql】批量更新/分组查询语句 CASE WHEN END 语法
举例1UPDATE biz_tableSET biz_tags = CASE biz_idWHEN 2408466 THEN '["不限"]'WHEN 2408533 THEN '["不限"]'ENDWHERE biz_id IN (2408466,2408468)举例 2SELECT batch, count(*) as "领取量" FROM (select ...原创 2019-05-26 09:56:54 · 405 阅读 · 0 评论 -
【知识库】--mysql 不同系统的安装(195)
1 下载 https://www.mysql.com/downloads/ https://dev.mysql.com/downloads/ 2 linux [root@host]# rpm -i MySQL-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-client-5.0.9-0.i386.rpm [root@原创 2017-05-06 16:33:09 · 523 阅读 · 0 评论 -
【技能库】--mysql Introduction(195)
Mysql数据库A database is a separate application that stores a collection of data. Each database has one or more distinct APIs for creating, accessing, managing, searching and replicating the data it hol翻译 2017-05-06 15:15:46 · 411 阅读 · 0 评论 -
【知识库】--mysql Shared and Exclusive Locks 共享锁和排它锁(195)
InnoDB implements standard row-level locking where there are two types of locks, shared (S) locks and exclusive (X) locks.A shared (S) lock permits the transaction that holds the lock to read a row.翻译 2017-05-06 07:39:11 · 813 阅读 · 0 评论 -
Caused by: org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Availabl
Caused by: org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]原因:设置属性时任何一个字段名字出现错误都会对应不上mysql的column 报出上面的错误原创 2017-05-14 16:51:01 · 11046 阅读 · 0 评论 -
Caused by: java.sql.SQLException: Column count doesn't match value count at row 1
Caused by: java.sql.SQLException: Column count doesn't match value count at row 1原因:一般是语法拼写错误,漏掉一列或者少分隔符。原创 2017-05-14 16:50:14 · 1427 阅读 · 0 评论 -
【知识库】--mysql 表字段修改操作(193)
MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列查看表的字段信息:desc 表名;查看表的所有信息:show create table 表名;添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);添加外键约束:alter table 从表 add constraint 外键原创 2017-05-04 09:45:16 · 705 阅读 · 0 评论 -
【技能库】--mybatis 批量插入(149)
<insert id="insertList" parameterType="java.util.List"> INSERT INTO <include refid="tableName"/> (a,b) VALUES <foreach collection="list" item="item" index="index" separa原创 2017-03-22 21:10:01 · 430 阅读 · 0 评论 -
【知识库】为什么把占空间的字段单独存一张表--mysql表设计(146)
前提:mysql数据库&InnoDB引擎 InnoDB使用了B+树&聚簇索引 B+树: 直接上图: 聚簇索引: 所谓聚簇索引,就是指主索引文件和数据文件为同一份文件,聚簇索引主要用在Innodb存储引擎中。在该索引实现方式中B+Tree的叶子节点上的data就是数据本身,key为主键,如果是一般索引的话,data便会指向对应的主索引。解释blog题目: 因为InnoDB的ta原创 2017-03-19 11:15:51 · 1270 阅读 · 1 评论 -
【知识库】--mysql COMMIT and ROLLBACK --AUTOCOMMIT(196)
COMMIT and ROLLBACK: These two keywords Commit and Rollback are mainly used for MySQL Transactions.When a successful transaction is completed, the COMMIT command should be issued so that the changes t翻译 2017-05-07 14:28:13 · 613 阅读 · 0 评论 -
【技能库】--mysql indexes 索引操作(195)
A database index is a data structure that improves the speed of operations in a table. Indexes can be created using one or more columns, providing the basis for both rapid random lookups and efficient原创 2017-05-07 15:19:05 · 441 阅读 · 0 评论 -
jenkin 发布失败 没有日志
发布失败1: 例如数据库字段缺失等,导致程序无法启动发布失败2:机器配置导致失败例如GC_PARAM="-Xmx4g -Xms4g -XX:G1HeapRegionSize=2m"但是机器配置没有4G那么多空间! 改成适合大小即可...原创 2018-12-18 19:49:47 · 273 阅读 · 0 评论 -
【mysql】--MVCC 多版本控制
InnoDB的mvcc,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间,一个保存行的过期时间(删除时间)。存储的并不是实际的时间,而是系统版本号。每一个新的事物,系统版本号都会递增。 事物开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。系统版本号:sysNoXSelect: 1 选择版本早于当前事务本版的数据行; 2原创 2017-12-10 20:22:40 · 1032 阅读 · 0 评论 -
Mysql -- mysql事务和锁InnoDB
http://www.cnblogs.com/zhaoyl/p/4121010.html转载 2017-09-13 22:38:40 · 269 阅读 · 0 评论 -
【知识库】--Mysql InnoDB数据库事务四种隔离级别(156)
Mysql InnoDB数据库 数据库事务隔离级别 1 read uncommitted 【no commit 】 2 read committed 【until other commit】 3 repeatable read 【until self commit】 4 serializable 【lock any read 】 参考: http://blog.youkuaiyun.com/wud原创 2017-03-29 21:30:01 · 469 阅读 · 0 评论 -
我们到底该不该使用 force index()索引?
工作中遇到一个棘手的问题,一个即将被丢弃的系统 有这样的一个查询select * fromtb_O force index(idx_create_time) inner join tb_task_Ainner join tb_task_Binner join tb_Con ...where tb_O.create_time 注意上面四个联合join时,现原创 2017-08-22 19:46:53 · 9416 阅读 · 0 评论 -
数据库超时--TIME_WAIT数量骤降,CLOSE_WAIT增加(四次握手)系统IO wait增加 --导致线上故障(274)
1 TCP/IP握手协议2 出现问题时线上监控原创 2017-07-28 17:53:13 · 679 阅读 · 0 评论 -
【技能库】--mysql 索引失效 force index也失效-- 原因解决方案(256)
查看执行时走的索引:explain SELECT count(*)FROM tb_taskWHERE create=0 and create_time 结果:+----+-------------+-------------+-------+---------------------------------------------+-----------------原创 2017-07-10 18:20:12 · 4750 阅读 · 1 评论 -
【知识库】--Mysql InnoDB 行锁实现 和 表锁实现(205)
两个事务,使用一个主键作为更新条件时,一定会有一个成功一个失败! 上了行锁。事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。一致性(Consistent):在事务开始和完成时,数据都必原创 2017-05-17 21:58:16 · 1401 阅读 · 0 评论 -
【知识库】--mysql engines MyISAM vs InnoDB(146)
MyISAM vs InnoDB MyISAM:不支持事务,不支持行级锁; 支持 fullindex indexing ; 最多 64 keys per table; 不支持外键; 支持table level locking; three files: formate file (store table structure), data file store rows,index fi原创 2017-03-19 10:24:48 · 409 阅读 · 0 评论