CodeSky 代码之空

随手记录自己的学习过程

分类:SQL

聊聊 MySQL 索引与索引设计

2024-09-01 22:54分类: SQL评论: 0

本文讲的都是比较基础的点,原理点到为止,适合人群为数据库小白,希望能够从数据库层面进行一些优化的同学。

最近在做旧项目改造的时候发现了很多不合理的索引设计,或者干脆就没有设计索引,开发者仿佛把在线业务的表当做了离线表那样想怎么查就怎么查,导致了整个接口相当缓慢,甚至有可能拖垮整个服务 / DB。

于是我发现一些很常规的优化似乎其实并不是每个人都很清楚,所以今天就来聊聊 SQL 的索引优化。

因为我们的项目都是 MySQL / MongoDB 的,而我基本也只学了 MySQL,因此这里以 MySQL 为主,MongoDB 为辅来进行索引设计的解读。

阅读更多 →

MySQL 忘记密码怎么办

2021-05-31 12:05分类: SQL评论: 1

之前浪费钱对于个人服务器也开通了 DB 和服务的隔离,现在看来不过是浪费钱,所以想要合并一下,结果发现!Service 服务器上安装好了 MySQL!我!却!把密!码!忘!了!

找了找之后发现还是可以抢救一下的:

找到配置文件地址

1mysql --help | grep -A 1 "Default options"
2

Ubuntu 16 可能在这个位置:/etc/mysql/mysql.conf.d/mysqld.cnf

编辑文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] 的下一行加上:skip-grant-tables

重启服务

1sudo service mysql restart
2

之后可以不用密码登录了:mysql -u root

修改密码:

mysql> FLUSH PRIVILEGES;

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';

收工

完成后记得把 skip-grant-tables 删掉(或者注释掉),否则是一个巨大的安全隐患。

参考

  • https://stackoverflow.com/questions/10070401/mysql-root-password-forgotten
阅读更多 →

Docker Mysql DB 初始化 UTF8 乱码问题的解决

2021-03-21 14:57分类: SQL评论: 2

最近在补单元测试,需要 mock 一个 DB,初始化 dump 数据阶段需要 dump 一些带中文的数据,但是发现跑起来都是乱码,非常迷惑,因为我们在链接、建立 Table 阶段都约定了:

1# 连接串中
2charset=utf8mb4,utf8
3
阅读更多 →

脏读、幻读与不可重复读

2018-08-26 14:01分类: SQL评论: 2

最近在读 《MySQL 技术内幕 InnoDB 存储引擎》,里面提到的各种概念都很新鲜,以前听说过脏读、幻读、不可重复读,但是对于概念不甚了解,于是查了一下,这里做个笔记。

数据库事务特征

数据库事务特征,即 ACID:

A Atomicity 原子性

阅读更多 →

聊聊 MongoDB 数据库的设计

2017-05-15 14:22分类: SQL评论: 5

自从正式使用了 MongoDB 之后,不止一次吐槽过 MongoDB 的各种垃圾设定,包括但不仅限于:

  • 没有事务
  • 没有表连接(新版支持了,但估摸着性能堪忧)

也就是说,同样的操作,在 SQL 下通过 JOIN 控制原子性的,通过 MongoDB 可能就不得不去查个两次,而且原子性不可保证——MongoDB 官方也是非常实诚,人家在选型的时候就说了,如果贵系统对并发性(Concurrency)有强要求,那么 MongoDB 可能就不是你的菜了。

阅读更多 →

使用 mongo-connector 同步 MongoDB 数据库到 ElasticSearch

2017-04-17 23:13分类: SQL评论: 0

在做毕设的时候,有一个需求,需要把 MongoDB 的数据同步到 ElasticSearch,于是发现了这个 mongo-connector

mongo-connector 可以把 MongoDB 的数据同步到 Solr、ElasticSearch 或者另一个 MongoDB。 支持 Python 2.6, 2.7, 3.3+ 、 MongoDB 版本 2.4, 2.6, 3.0, 3.2, and 3.4.

其实官方 Get Started 也挺清楚的,但是用的时候还是会遇到一些非常智障的问题。

阅读更多 →

MongoDB aggregate 入门

2017-04-17 22:12分类: SQL评论: 0

本文可能随着 MongoDB 使用技能的增长而更新,因为 aggregate 可以做的事情太多啦。

在 MongoDB 中,最强大的工具无异于 aggregate,aggregate 接受一个数组,数组的每一项都是管道(pipeline)对象。

管道的概念我们在 Linux 中也遇到过,可以把前面的返回值作为后者的输入值操作。

阅读更多 →

MongoDB 初窥

2017-02-23 23:36分类: SQL评论: 3

这周开始由于项目的原因正式接触 MongoDB,之前稍微看过一点,但没怎么正式用过,一方面是设计思维牢固的钉死在了关系数据库的三大范式上(第四和 BC 有点过了……),另一方面是没有一个机会去做 PHP 以外的站(嗯,因为黄金搭档……)。

所以兜兜转转,稍微介绍一下 MongoDB 的一些事。

引言

MongoDB 是一个 NoSQL (Not Only SQL) 的数据库,提供面向文档的存储,操作简单,天生的分布式,带文件存储功能(GridFS)。

阅读更多 →

一次对于时间存储方式的讨论

2017-01-05 22:39分类: SQL评论: 0

上周的某一天,大家突然开始说起了公司的时间存储格式,有个同学的公司的时间返回值特别奇怪,迷之诡异,无法在前端填入Date()解析,这种时候我就想到了——时间戳大法好,下一个。

——嗯,真的是这样吗?

然后我们掏出 MySQL 的文档:

阅读更多 →
共 16 篇文章,2 页