02 2019 档案
摘要:Apache Cassandra特性 Cassandra节点节点 Cassandra数据模型 群集(Cluster)是Cassandra数据模型中最外层,包含多个群集节点,对外提供服务 群集节点(Cluster Node)用来存储数据副本,群集中所有节点功能相同。 键空间(Keyspace)是数据的
阅读全文
摘要:服务器信息 搭建三节点的Cassandra群集: 下载依赖包 配设JAVA环境 下载java安装包,解压到/usr/java18目录,然后在/etc/profile文件中追加下面代码: 使用下面命令刷新环境变量: 检查JAVA是否安装正确: 安装Cassandra 配置Cassandra 修改/ex
阅读全文
摘要:创建keyspace和table 注意在创建keyspace时,数据中心的名称需要区分大小写,如果数据中心名称写错,创建keyspace和table能成功,但INSERT数据时会报错。 在cqlsh上报NoHostAvailable错误,如果使用python访问,会报下面错误: 需要安装python
阅读全文
摘要:对于批量插入数据的操作,MySQL申请自增的策略为: 测试Demo: 其他跳号原因: 1、语句显式插入比当前自增列更大的值 2、语句执行获取到自增值后所在事务被回滚
阅读全文
摘要:机械硬盘的性能 7200转/分的STAT硬盘平均物理寻道时间是9ms 10000转/分的STAT硬盘平均物理寻道时间是6ms 15000转/分的SAS硬盘平均物理寻道时间是4ms 7200转/分的STAT硬盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms 10000转/分的STAT
阅读全文
摘要:测试脚本: 案例分析 参考: INSERT加锁规则
阅读全文
摘要:淘宝林晓斌总结 学习整理: Insert操作加锁规则 官方文档:
阅读全文
摘要:按照非索引列更新 ## ## 测试数据: CREATE TABLE `tb4001` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(200) DEFAULT NULL, `c3`
阅读全文
摘要:非索引列更新 ## ## 测试数据: CREATE TABLE `tb4001` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(200) DEFAULT NULL, `c3` in
阅读全文
摘要:MYSQL 支持的事务隔离级别 InnoDB 默认使用REPEATABLE READ 隔离级别,主要用来保证主从复制在STATEMENT语句级别下数据一致。如果在MySQL 5.1版本后二进制日志使用ROW级别,则可将默认事务隔离级别修改为READ COMMITTED以提高事务并发性。 SELECT
阅读全文
摘要:在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读:1、快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数据的一致性,读取数据时不需要对数据进行加锁,且快照读不会被其他事物阻塞。2、当前读:也称锁定读(loc
阅读全文
摘要:在MySQL中,事务隔离级别RC(read commit)和RR(repeatable read)两种事务隔离级别基于多版本并发控制MVCC(multi-version concurrency control)来实现。
阅读全文
摘要:NAND Flash最小存储单元: 写数据操作: 读取数据操作: 通过对控制闸(Control Gate),使得浮置闸(Floating Gate)里的电子被吸住,然后让N通道(N-Channel)通过电流,利用电流感应浮置闸(Floating Gate)里电子捕获量的多寡,通过感应强度转换为二进制
阅读全文
摘要:SSD与RAID 51、在RAID 5这类Parity-RAID上存在partial-stripe写问题,当发生partial-stripe写时,首先需要将条带中没有被更新的数据读取出来,然后与新写入的数据进行合并,在计算校验值,将新更新的数据和校验值一起写入到磁盘,整个Partial-stripe
阅读全文
摘要:SSD性能 SSD性能抖动 比特错误(BitError) 读写/擦除操作冲突 垃圾回收(GC) 读平衡(Read Disturb)
阅读全文
摘要:MySQL 5.5版本 在MySQL 5.5版本前,所有DDL操作都使用Copy Table的方式完成,操作过程中原表数据库不允许写入,只能读取,在MySQL 5.5版本中引入FIC(Fast index creation)特性。 FCI特性: 在MySQL 5.6.7版本前,DDL操作主要有cop
阅读全文
摘要:测试环境:MySQL版本:MySQL 5.7.19复制模式:ROW 执行下面语句: 执行报错: ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY' 原因分析:1、第一次INSERT语句,获得自增值为1。2、UPDATE操作完成,将表中数
阅读全文
摘要:修改普通表为自增表 将普通表修改为自增表,可分为两种类型: 1、将现有列修改为自增列,当数据类型为数值类型且表中数据唯一时,直接只用ALTER TABLE ALTER COLUMN命令进行修改,修改操作会保留现有列中数据。 2、对普通表新增自增列,如果直接使用ALTER TABLE ADD COLU
阅读全文
摘要:自增列持久化问题 5.5/5.6/5.7三个版本中,MySQL并不会将自增列分配的自增值信息固化到磁盘,当MySQL重启后,会根据自增列上当前最大值和参数auto_increment_offset来确定下一次的自增值,为快速获取自增列上最大值,MySQL要求自增列必须建有索引。 如果一张自增表的数据
阅读全文
摘要:在数据库表设计中会纠结于”自然键”和”代理键”的选择,自然键在实现数据“软删除”时实现比较复杂,部分自然键因为键值过长或多列组合导致不适合作为表主键,而比较常见两种代理键为自增列(auto incremnet)和全局唯一标识列(GUID)。 使用自增列作为主键的优缺点: 使用GUID列的优缺点: 在
阅读全文
摘要:测试环境:MySQL版本:MySQL 5.7.19复制模式:ROW 执行下面操作: ##测试脚本: CREATE TABLE T_AUTO_TEST ( ID INT AUTO_INCREMENT PRIMARY KEY, C1 INT NOT NULL, UNIQUE KEY UNI_C1(C1)
阅读全文
摘要:MySQL Inception原理图 MySQL Inception问题(2.1.50): 对于大量DML语句,MySQL Inception需要消耗很长时间去检查。
阅读全文
摘要:安装依赖包 安装BISON 创建所需目录 安装mysql_inception 创建配置文件 启动服务
阅读全文
摘要:## 关联更新 ## 注意set条件在WHERE条件之前关联ON条件之后 UPDATE db1.tb001 AS T1 INNER JOIN db2.tb002 AS T2 ON T1.id=T2.id SET T1.c1=T2.c2 WHERE t1.id>1000
阅读全文
摘要:在MySQL中,可以使用LIMIT来限制删除的数量,但部分写法并不支持LIMIT. LIMIT方式 别名方式: 但MySQL不支持别名+LIMIT方式,如: 对于多表关联操作,同样不允许别名+LIMIT操作,但可以将LIMIT放入子查询中:
阅读全文
摘要:SSD 特性 SSD 基础知识 SDD Flash规则 SSD 映射表(Mapping Table) SSD 垃圾回收(Garbage Collection) SSD 磨损均衡(Wear Leveling) SSD 预留空间(Over Provisioning) SSD 写放大原因 容易引发SSD写
阅读全文
摘要:/sys/block/sda/queue/nr_requests 磁盘队列长度。默认只有 128 个队列,可以提高到 512 个.会更加占用内存,但能更加多的合并读写操作,速度变慢,但能读写更加多的量 /sys/block/sda/queue/iosched/antic_expire 等待时间 。读
阅读全文
摘要:lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。 lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。 Fedora用户可以通过
阅读全文
摘要:Linux IO调度算法Linux下目前有4中IO调度算法: 1、CFQ(Complete Fairness Queueing,完全公平排队 I/O 调度程序) 2、NOOP(No Operation,电梯式调度程序) 3、Deadline(截止时间调度程序) 4、AS(Anticipatory,预
阅读全文
摘要:一致性哈希设计目标用于解决热点问题。 如果通过哈希取余HASH(Object)%N的方式来实现缓存,当某一节点出现故障时,故障节点对应的内容将无法映射到其他节点中,而当新增一节点时,也无法将部分内容映射到新缓冲中,因此不满足一致性哈希的单调性原则。为解决上述问题,使用HASH环来实现,按hash后的
阅读全文
摘要:可以用show table status 来查看表的信息,如: show table status like '%waybill5%' \G 但使用information_schema.`TABLES`更方便查看。 查看数据库级别的使用情况 SELECT TABLE_SCHEMA AS databa
阅读全文
摘要:在MySQL中,可以通过lower_case_table_names参数来设置是否区分表名大小写问题,参数有效取值为:0,1,2:0表示,表在文件系统存储的时候,对应的文件名是按建表时指定的大小写存的,MySQL 内部对表名的比较也是区分大小写的;1表示,表在文件系统存储的时候,对应的文件名都小写的
阅读全文
摘要:MySQL 5.5版本DDL在MySQL 5.6.7版本前,DDL操作主要有copy和inplace两种方式,两种方式全程都需要锁表禁止写操作,允许部分时间段的读操作。copy方式: (1)新建带索引的临时表 (2)锁原表,禁止DML,允许查询 (3)将原表数据拷贝到临时表(无排序,一行一行拷贝)
阅读全文
摘要:MySQL可以使用MODIFY COLUMN / ALTER COLUMN / CHANGE三种方式修改列属性。 对于部分只需要修改表定义而不需要修改表数据的操作,使用ALTER COLUMN操作可以避免数据发生移动,提高ALTER 操作效率。 仅需要修改表结构的操作有:1、更改字段的默认值2、增加
阅读全文
摘要:##========================================================================## ## 修改表字段 ## CHANGE和MODIFY区别在于CHANGE 可以修改列名,而MODIFY不可以,其他修改一样 ALTER TABLE [TABLE_NAME] CHANGE [COLUMN] old_col_name new_co...
阅读全文
摘要:##=============================================## ## 在创建表的时候为字段添加注释 ## CREATE TABLE TB003 ( ID INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID', C1 INT COMMENT 'C1列' )ENGINE=InnoDB DEFAULT CHARSET=utf...
阅读全文
摘要:##================================## ## 修改表的存储引擎 ## SHOW TABLE STATUS LIKE 'TB_001' \G; ALTER TABLE TB_001 TYPE = MYISAM; ##================================## ## 查看表中列属性 ## SHOW COLUMNS FROM TB_001...
阅读全文
摘要:DROP TABLE与MySQL版本 MySQL在5.5版本中引入自适应hash索引,用于提升经常访问的数据页的性能,在删除表时,需要先通过扫描LRU链表找到该表在自适应hash索引使用的数据页,将这些数据从自适应hash索引中删除。如果为MySQL实例配置较多的物理内存,扫描自适应hash索引的L
阅读全文
摘要:ALTER TABLE 和FLUSH TABLE导致的间接等待 场景:1、会话A执行耗时较长的操作;2、会话B执行ALTER TABLE 或FLUSH TABLES等操作时,会向其他会话(线程)发送表变更通知,要求其他会话关闭再重新打开相关表;3、会话A执行过程中收到会话B的变更通知,在会话A执行结
阅读全文
摘要:操作方式 在操作系统层对要删除的表添加硬连接 ln demo_table.ibd demo_table.ibd.bak 在MySQL实例上执行DROP TABLE命令 DROP TABLE demo_table; 使用TRUNCATE命令批量删除大文件 ## 设置truncate命令路径 trunc
阅读全文
摘要:##使用mysqladmin进行修改 mysqladmin -u username -h hostname password 'new password'; ##使用set命令进行修改 SET PASSWORD FOR 'username'@'host' =PASSWORD('new password') ##使用update命令进行修改 ##MySQL 5.7版本: UPDATE ...
阅读全文
摘要:如root用户密码,可以按照以下方式来修改: STEP1: 停止MySQL服务 STEP2: 以忽略权限方式启动MYSQL服务 STEP3: 更新管理员密码 STEP4: 停止MySQL服务,重新正常启动
阅读全文
摘要:CREATE USER语法 GRANT USER语法 PASSWORD用法: WITH GRANT OPTION 通配符 用户过期 用户权限 在MySQL中,有5种控制数据访问的权限,12种控制数据结构的权限,11种管理数据库系统的权限
阅读全文
摘要:MySQL5.5/5.6版本 在MySQL 5.7 版本之前,不能对账号进行锁定或设置过期,只能通过更新密码来实现。 MySQL5.7版本 在MySQL 5.7版本中,可以设置MySQL账号自动过期时间,从MySQL 5.7.10开始,参数default_password_lifetime默认值从0
阅读全文
摘要:在MySQL 5.7及后续版本中,可以按照账号来限制每个账号实际具有的资源限制。 语法: GRANT WITH option, 如: 可设选项: MAX_QUERIES_PER_HOUR count : 每小时最大查询次数 MAX_UPDATES_PER_HOUR count :每小时最大更新次数
阅读全文
摘要:推荐账号安全设置 避免下列危险操作 控制账号权限 使用SSL确保网络传输安全 使用SSL确保网络传输安全 MySQL加密算法增强 在MYSQL 5.6版本前,binlog日志中和用户密码相关的操作是不加密的,在MYSQL 5.6版本中进行了加强,但在搭建复制时仍需要使用明文密码。
阅读全文
摘要:用户权限验证顺序 实例级别授权 数据库级别级别授权 表级别级别授权 MySQL特殊权限 MySQL数据库/数据表/数据列权限权限 MySQL全局管理权限
阅读全文
摘要:如果对满足WHERE条件数据执行UPDATE,而UPDATE未导致前后数据发生变化,这种情况下会产生二进制日志么? ROW格式下测试: 使用mysqlbinlog查看日志,会发现没有对应上面update的二进制日志生成。 STATEMENT格式下进行测试: 查看二进制日志,会发现有以下信息: 总结:
阅读全文
摘要:BINLOG和REDO/UNDO LOG的区别1、处理层次不同,REDO/UNDO LOG由Innodb存储引擎处理,而BINLOG由MySQL 服务层处理。2、记录内容不同,REDO/UNDO LOG记录的数据页的修改情况,REDO LOG采用物理日志+逻辑日志的方式存储,UNDO LOG采用逻辑
阅读全文
摘要:查看Binlog相关信息 ## ## ## 在MySQL内部查看binlog文件列表 ## SHOW BINARY LOGS; ## ## ##查看某个binglog文件中特定pos的操作 SHOW BINLOG EVENTS IN 'mysql-bin.000011' FROM 4742885 L
阅读全文
摘要:BINLOG文件生成与删除binlog文件生成:在每条二进制日志写入到日志文件后,会判断该文件是否超过max_binlog_size,如果超过则生成一个新的binlogbinlog文件删除:1>当使用RESET MASTER命令后,会清空全部二进制日志命令:RESET MASTER;2>当执行PUR
阅读全文
摘要:MySQL Binlog常用参数 会话级别log_bin参数 binlog_rows_query_log_events参数 默认配置下,ROW格式二进制日志只记录数据发生的变化,并不会记录什么语句导致数据发生变化,而出于审计或者处理bug的需求,需要了解导致数据变化的SQL语句,MYSQL提供了bi
阅读全文
摘要:binlog_format参数介绍 混合格式(mixed)特点: 语句格式(statement)优缺点 行格式(row)优缺点 Binlog格式与事务隔离级别 MySQL 5.1以前,Statement是Binlog的默认格式,即依次记录系统接受的SQL请求;5.1及以后,MySQL提供了Row和M
阅读全文
摘要:在MySQL 5.5/5.6版本中,使用SHOW GRANTS命令可以导出用户的创建脚本和授权脚本。 在MySQL 5.7版本中,需要使用SHOW CRETAE USER命令导出用户创建脚本,然后使用SHOW GRANT命令导出用户授权脚本。
阅读全文