![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 78
我就是我,不一样的烟火
这个作者很懒,什么都没留下…
展开
-
全局锁、表锁、行锁
全局锁全局锁的典型使用场景是,做全库逻辑备份历史做法:flush table with read lock;确保不会有其他线程对数据库做更新,然后对整个库做备份。mysql> flush table with read lock;Query OK, 0 rows affected (0.10 sec)mysql> select * from t;+----+------+------+| id | c | d |+----+------+------+| 0 |原创 2022-01-04 23:20:18 · 1242 阅读 · 2 评论 -
普通、唯一索引的选择与实践
唯一索引,普通索引选择查询过程(微乎其微影响)假设维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';可以给id_card上面加索引,身份证号字段比较大,不建议你把身份证号当做主键。(非主键索引会存储主键索引的值,因此推荐选用短字段当主键索引)对于普通索引来说,会多一次判断,需要查找下一个记录判断是否也满足匹配条件,不满足则终止扫原创 2022-01-02 15:41:12 · 592 阅读 · 0 评论 -
深入浅出MySql索引
索引的作用提高数据查询效率索引的常见模型可以用于提高读写效率的数据结构很多,这里三种常见、也比较简单的数据结构,它们分别是哈希表、有序数组和搜索树哈希表键 - 值(key - value) 的形式,哈希思路:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置。哈希冲突的处理办法:链表哈希表适用场景: 只有等值查询的场景,比如 Memcached 及其他一些 NoSQL 引擎。有序数组按顺序存储。查询用二分法就可以快速查询,时间复杂度是:O(lo原创 2022-01-02 14:50:35 · 1248 阅读 · 0 评论 -
Mysql日志系统
redo logMySQL的的更新操作不会每次都写入磁盘,如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程IO成本、查找成本都很高。类似使用酒店掌柜粉板的思路来提升效率。(先写粉板,不忙时候再写账本)WAL是什么?Write-Ahead Logging,它的关键点就是先写日志,再写磁盘,也就是先写粉板,等不忙的时候再写账本。InnoDB引擎就会先把记录写到redo log(粉板)里面,并更新内存,这个时候更新就算完成了。同时,InnoDB引擎会在适当的时候,原创 2021-12-25 18:44:07 · 672 阅读 · 0 评论 -
SQL查询执行流程
mysql> select * from T where ID=10;我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程。MySQL 基本架构MySQL可以分为Server层和存储引擎层两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等存储引擎负责数据的存储和提取。其架构模式是插件式原创 2021-12-25 17:41:59 · 478 阅读 · 0 评论 -
mac 开启mysql bin-log
vim /usr/local/etc/my.cnf 添加以下配置expire_logs_days = 5 定期清理log-bin = /usr/local/var/mysql/mysql_bin_log/mysql-bin #开启binlog,指定文件闻之server_id = 1 #配置mysql replication需要定义,不能和canal的slaveId重复binlog_fo...原创 2020-04-23 19:25:00 · 74 阅读 · 0 评论 -
数据库 ACID
在交易系统中,有了数据库的事务机制,只要确保每一笔交易都在事务中执行,我们的账户系统就很容易保证流水和余额数据的一致性。但是,ACID 是一个非常严格的定义,或者说是理想的情况。如果要完全满足 ACID,一个数据库的所有事务和 SQL 都只能串行执行,这个性能肯定是不能满足一般系统的要求的。对账户系统和其他大多数交易系统来说,事务的原子性和持久性是必须要保证的,否则就失去了使用事务的意义,而一致...原创 2020-05-03 17:30:36 · 401 阅读 · 0 评论 -
数据库操作回顾
sql database基本指令#查看数据库版本select version();#查看当前时间select now()#创建表create database xxx charset utf8;#使用表use xxx#删除表drop database xxx;#创建表语句show create database xxx;#显示所有表show databasessql...原创 2019-03-24 15:05:00 · 51 阅读 · 0 评论 -
Mysql隔离级别
在交易系统中,有了数据库的事务机制,只要确保每一笔交易都在事务中执行,我们的账户系统就很容易保证流水和余额数据的一致性。但是,ACID 是一个非常严格的定义,或者说是理想的情况。如果要完全满足 ACID,一个数据库的所有事务和 SQL 都只能串行执行,这个性能肯定是不能满足一般系统的要求的。对账户系统和其他大多数交易系统来说,事务的原子性和持久性是必须要保证的,否则就失去了使用事务的意义,而一...原创 2020-05-03 17:34:00 · 65 阅读 · 0 评论 -
MySQL to Redis同步
方式1:使用MQ对于此类业务,增加一个消费订阅基本没什么成本,服务本身也不需要做任何更改。唯一需要担心的一个问题是丢消息的情况?因为现在消息是缓存数据的唯一来源,一旦出现丢消息,缓存里缺失的那条数据永远不会被补上。 MQ 集群,像 Kafka 或者 RocketMQ,它都有高可用和高可靠的保证机制,可以满足数据可靠性要求的。方式2:使用 Binlog 实时更新 Redis 缓存数据更新服务...原创 2020-05-04 00:15:43 · 295 阅读 · 0 评论 -
怎么避免写出慢 SQL
在大多数实际的系统中,慢 SQL 消耗掉的数据库资源,往往是正常 SQL 的几倍、几十倍甚至几百倍。怎样才能在开发阶段尽量避免写出慢 SQL 呢?估算数据量慢 SQL 对数据库的影响,是一个量变到质变的过程,对“量”的把握,就很重要。编写一条查询语句的时候,可以依据你要查询数据表的数据总量,估算一下这条查询大致需要遍历多少行数据。使用索引使用索引可以有效地减少执行查询时遍历数据的行数,提...原创 2020-05-03 18:12:33 · 339 阅读 · 0 评论 -
数据库操作简单回顾
sql database基本指令#查看数据库版本select version();#查看当前时间select now()#创建表create database xxx charset utf8;#使用表use xxx#删除表drop database xxx;#创建表语句show create database xxx;#显示所有表show databasessql...原创 2019-03-24 15:02:18 · 115 阅读 · 0 评论