cache数据库
我们都知道Mysql的TableCache是表定义的缓存,江湖上流传着各种对这个参数的调优方法。
tablecache的作用,就是节约读取表结构文件的开销。对于tablecache是否命中,其实tablecache是针对于线程的,每个线程有自己的缓存,只缓存本线程的表结构定义。不过我们发现,strace中没有关于表结构文件的open操作(只有stat操作,定位表结构文件是否存在),也就是说tablecache不命中闹亮罩,不一定需要读取表结构文件。这种感觉好像是:在不命中tablecache时,命中了另外一个表结构缓存。
运维建议:
我们读一下MySQL的文档,关于table_open_cache的建议值公式:建议值=最大并发数*join语句涉及的表的最液闹大个数。
通过实验我们键迅容易理解:table_cache是针对于线程的,所以需要最大并发数个缓存。另外,一个语句join涉及的表,需要同时在缓存中存在。所以最小的缓存大小,等于语句join涉及的表的最大个数。将这两个数相乘,就得到了MySQL的建议值公式。
2. cache数据库如何用文件流模式进行数据备份
1、打开CMD窗口(不要登录),通过命令备份mydb1数据库
备份命令: mysqlmp -u用户名 -p 数据库名字 > 数据文件的位置
例如: mysqlmp -uroot -p mydb1 > d:/mydb1.sql
输入密码, 如果没有提示错误, 即备份成功, 查询d盘的mydb1.sql文件
提示: (1)备份数据库的命令后面不要添加分号(;)
(2)备份数据库只是备份数据库中的表, 不会备份数据库本身
2、登录到MySQL客户端,删除mydb1库
– 删除mydb1库
drop database mydb1;
– 查询所有库, 是否还存在mydb1库
show databases;
由于备份时, 没有备份数据库本身, 所以在恢复库中的数据前, 需要先创建好要恢复的库
-- 创建mydb1数据库
create database mydb1 charset utf8;
提示: 此时的mydb1库是空的, 没有任何表
3、在CMD窗口中(不要登录),通过命令恢复mydb1数据库
– 在CMD窗口中(不要登录)
恢复命令: mysql -u用户名 -p 数据库名字 < 数据文件的位置
例如: mysql -uroot -p mydb1 < d:/mydb1.sql
输入密码, 如果没有提示错误, 即恢复成功, 下面进行验证
-- 在登录状态下, 选择mydb1库, 查询其中的表是否恢复了回来
use mydb1;
show tables;
3. cache数据库审计难点在哪
Caché数据库的审计有哪些难点?
Caché数据库中的数据是存储在一个个的Global中的,一个Global就是一个命名的多维数组,它存储在Caché
的物理数据文件中,物理文件的存储单位是数据块Block(一般是8K),Caché使用一个类似倒树的结构来控制这些数据块。
Global的下标和数据在一个块中是按顺序存储在一起的。由于采用这种结构,Caché提供了三种方式来访问数据,分别是sql语句、对象访问数据库、多维访问数据数组,第一代数据库安全审计系统只能支持关系型数据库及SQl访问方式的审计,对象访问和直接多维数据组的访问则无法支持;无论国内还是国外技术,此安全技术的研究还是空白。
昂楷如何做到对Caché数据库的审计
昂楷数据库系统通过DPI+DFI的技术,能够对Caché数据库的各种访问形式,产生的各种形态的报文格式进行正确识别,解决了面向对象的Caché数据库安全审计问题,能完整的审计出客户端工具:Studio、Terminal、Portal、MedTrak、Sqlmanager的操作内容及相关返回结果,在原有的对sql语句审计外能更深度的审计出对象访问和直接多维数据组访问,真正做到核心数据库安全、震慑作用,实现数据库安全稳定运行。