MYSQL索引原理深入学习

1.索引的本质是什么 2.MYSQL为何多数用B+Tree,而不是其他 3. BTree的特点 4. B+Tree的特点 4.1 为何B+Tree叶子节点多了一个指针 4.2 为什么B+Tree上层节点不存储数据 5. 两种不同的索引分别存储文件什么样 6. Innodb索引实现原理 6.1 为什么innodb表必须有主键,并推荐【整型自增】 6.2 为什么非主键索引结构叶子节点存储的是主键 More


MYSQL读写分离,多库并行写入,主从复制问题

问题:你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题? 问题1:如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 问题2:MySQL 主 More


MYSQL索引学习

总结: 索引的原则: 1. 最左前缀匹配 2. 区分度高的列作为索引,索引并非建立的越多越好,适用就好3. 索引的字段尽量的小4. 尽量扩展索引,建立联合索引,不是建多个索引5. 少用select *6. not in,not exists,<> != 不等于会不触发索引 小于 > 大于 <= >= 这个根据实际查询数据来判断,如果全盘扫描速度比索引速度要快则不走索引 。 建索引的 More


思路练习:mysql 三亿条大表如何不影响业务下增加一新列

条件: 3亿数据服务不能停,就是不能影响业务进行 常规操作增加一列,ALTER TABLE 你的表 ADD COLUMN 新列 varchar(128);常规的办法会导致锁表,服务暂停 所以大致思路为 简易过程如下: 新建一个和 Table1 完全同构的 Table2在表 Table2 上执行 ALTER TABLE 你的表 ADD COLUMN 新列 char(128)将 Table1 中的数据拷贝到 Table2,最好用 More


MYSQL删除记录后优化表空间

服务器记录了一些操作日志经常把空间吃满了 select id,send_email,user_email,from_unixtime(send_time) from email_log order by id desc limit 1; from_unixtime 转换linux格式为可以阅读的格式 删除ID小于20万的数据 delete from email_log where id < 200000; optimize table email_log


Mysql8 用Navicat和Php5.6连接失败

情况: MYSQL8 的密码机制导致了大量的软件无法连接 1.导致Navicat无法连接MySQL8.0的 2.Sequel Pro无法连接mysql8 3.php 5.6 的原来代码也连接不上了,显示数据库无法连接(看来要用php7) 提示客户端过期 原因 MySQL 8.0 版本去除了 password 字段,改用 authentication_string 字段,导致网上可以搜到的各种问题的各种解决方法完全没有效果;同时还更 More


MYSQL 删除mysql-bin文件

MYSQL 开启主从同步后服务器很快空间告急了。 1.1G mysql-bin.000001 1.1G mysql-bin.000002 1.1G mysql-bin.000003 1.1G mysql-bin.000004 1.1G mysql-bin.000005 1.1G mysql-bin.000006 1.1G mysql-bin.000007 1.1G mysql-bin.000008 1.1G mysql-bin.000009 1.1G mysql-bin.000010 1.1G mysql-bin.000011 1.1G mysql-bin.000012 1. More


MYSQL 主从同步

1.修改主服务器配置文件 vi /etc/my.cnf [mysqld] log-bin=mysql-bin server-id=1 改完 重启动mysql 2. 创建一个账户 mysql > grant replication slave on *.* to 'rep'@'%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.01 sec) replication 表示这个账户只能用来进行主从复制 3. 获取二进制日志的信息并导出数据 More


自动删除mysql表,备份,切割

运营的路上,乐趣无群 诊断到了那些数据库在占空间,就想到了备份,压缩,删除的策略。 #!/bin/sh BIN_DIR="/Applications/XAMPP/bin" MYUSER="urldb" MYPASS="123456" DB_NAME="crm" TABLE="fis_cash" BCK_DIR="/Users/ge" MAX_ID=`$BIN_DIR/mysql -u$MYUSER -p$MYPASS -Bse "select max(id) from $DB_NAME.$TABLE"` $BIN_DIR/mysqldump -h lo More


MySQL查看数据库表容量大小

发现数据库占了很多空间,于是收集到了这个脚本 1.查看所有数据库容量大小 select table_schema as '数据库', sum(table_rows) as '记录数', sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)', sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)' from information_schema.tables group by table_schema order by sum(data_leng More