标签归档:mysql

mysql ICP索引下推(Index Condition Pushdown)

概述

Index Condition Pushdown (ICP)是MySQL用索引去表里取数据的一种优化。如果禁用ICP,引擎层会穿过索引在基表中寻找数据行,然后返回给MySQL Server层,再去为这些数据行进行WHERE后的条件的过滤。ICP启用,如果部分WHERE条件能使用索引中的字段,MySQL Server 会把这部分下推到引擎层。存储引擎通过使用索引条目,然后推索引条件进行评估,使用这个索引把满足的行从表中读取出。ICP能减少引擎层访问基表的次数和MySQL Server 访问存储引擎的次数。总之是 ICP的优化在引擎层就能够过滤掉大量的数据,这样无疑能够减少了对base table和mysql server的访问次数。 阅读全文

MySQL InnoDB的B+树索引

B+树索引其本质就是B+树在数据库中的实现,但是B+索引在数据库中有一个特点就是其高扇出性,因此在数据库中,B+树的高度一般都在2~3层,也就是对于查找某一键值的行记录,最多只需要2到3次IO,这倒不错。因为我们知道现在一般的磁盘每秒至少可以做100次IO,2~3次的IO意味着查询时间只需0.02~0.03秒。 阅读全文

MySQL数据库准入规范

当前版本

  • 当前版本: 0.6
  • MySQL数据库准入规范由DBA起草,经rd\op\tc评审通过;

目录

MySQL数据库准入规范
当前版本
目录
1. MySQL 准入的背景和目的
2. MySQL 数据库准入项
2.1 数据库设计
2.1.1 数据库设计
2.1.2 表结构设计
2.1.3 索引设计
2.1.4 分区表
2.1.5 中间表和备份表
2.1.6 分库分表
2.1.7 数据库账号
2.1.8 字符集
2.1.9 数据库连接
2.1.10 其他
2.2 SQL编写
2.2.1 SELECT语句
2.2.2 DML语句
2.2.3 多表联合查询
2.2.4 事务
2.2.5 表扫描方式
2.2.6 排序和分组
2.2.7 数据导出导入
2.2.8 cache的使用
2.2.9 其他
2.3 MySQL 服务器及实例
2.3.1 硬件及网络
2.3.1.1 OS内核
2.3.1.2 磁盘相关
2.3.1.3 机房及网络
2.3.2 数据库实例
2.3.2.1 MySQL 版本
2.3.2.2 MySQL 目录
2.3.2.3 MySQL 参数
2.3.2.4 MySQL 架构
2.3.2.5 MySQL 日志
2.3.2.6 MySQL 备份
2.4 中间层DBProxy
2.4.1 服务器配置和命名
2.4.2 机房和网段
2.4.3 DBProxy日志
2.4.4 访问账号和权限
3. 上线及监控
3.1 上线时间窗口
3.2 上线单内容
3.3 MySQL 和DBProxy监控
3.4 产品线SLA
3.5 其他
4. MySQL 风险点及BUG
4.1 同步中断
4.2 主从数据不一致
4.3 数据库crash 阅读全文

MySql登陆密码忘记怎么办?

可以进行如下的步骤重新设置MySQL的root密码:

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。
2.修改MySQL的登录设置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
skip-grant-tables
保存并且退出vi。
3.重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4.登录并修改MySQL的root密码
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 3.23.56 Type ‘help;’ or ‘\h’ for help.Type ‘\c’ to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’ ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.将MySQL的登录设置修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除,保存并且退出vi。
6.重新启动mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

Mongo db 与mysql 语法比较

mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。 阅读全文