Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Экономия размера базы  [new]
voter
Member

Откуда:
Сообщений: 21
Добрый вечер!

Неделю изучаю MS SQL Express 2014. Неожиданно быстро уткнулся в ограничение по размеру базы, после ошибки импорта почитал и проверил - действительно файл myname.mdf стал весить ровно 10 Гб....

Пока в базе собственно одна таблица:
Имя столбкаТип данныхРазрешить
IP_Seccodenvarchar(4)Unchecked
IP_PricemoneyUnchecked
IP_Amount intUnchecked
IP_DatedateUnchecked
IP_Timetime(7)Unchecked
IP_Number intUnchecked


, в которую я успел вставить 108 млн записей... но нужно добавить еще как минимум 50 млн, а до конца года она легко удвоится...
Кластеризованный индекс на IP_Number, некластеризаванные IP_Date и IP_Seccode.
Планировал накапливать статистику, а также агрегировать ее с сохранением в этой же базе...

Прошу подсказать - есть ли возможность как-то сжать базу (подобно MS Access), чтобы хотя бы на первое время хватило?
Может как-то сэкономить размер базы можно по другому?
Из того что вижу - поле IP_Seccode могу вынести в отдельный справочник, заменив тип данных на SMALLINT... аналогично IP_Date могу заменить на SMALLINT... планировал делать это позднее (не думал, что так быстро достигну предела экспресса... С MS Access решил уходить именно по этому же - там всего 2 гб на таблицу (базу)... С индексами (может здесь какие излишества) - уверен в IP_Date и IP_Seccode - по ним часто поиск и агрегирование будет.

Поделитесь мыслями, плииз...
30 июл 15, 00:19    [17952930]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
voter
Может как-то сэкономить размер базы можно по другому?
Из того что вижу - поле IP_Seccode могу вынести в отдельный справочник, заменив тип данных на SMALLINT... аналогично IP_Date могу заменить на SMALLINT
Если так сделать, то влезут ваши ещё 50 млн записей.
Но в общем, для серьёзного использования 10 гб будет мало.
voter
Неделю изучаю MS SQL Express 2014
Странный способ изучения :-)
voter
Поделитесь мыслями, плииз...
Можно разбивать систему на много баз.
Эта таблица в одной базе, статистика в другой, агрегаты в третьей.
В основной - только процедуры и вьюхи, синонимы, программные объекты.
Можно даже вообще по годам бить на базы, например.
30 июл 15, 00:30    [17952956]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
voter
Member

Откуда:
Сообщений: 21
... признателен вам за уделенное время...

alexeyvg
Странный способ изучения :-)

... зато сразу узкие места видно... да и не студент я уже давно, изучение растет из реальной потребности...

alexeyvg
Можно разбивать систему на много баз.

... а что практика говорит - стоит везде писать база.таблица или проще умощнить программу до небесплатной версии и все видеть в одной базе? Что посоветуете неофиту?
30 июл 15, 00:59    [17952983]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для изучения возможностей вполне подойдет Developer Edition, который стоит копейки, но не предназначен для коммерческого использования.
30 июл 15, 01:50    [17953021]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
voter
Member

Откуда:
Сообщений: 21
Гавриленко Сергей Алексеевич, почитаю, спасибо...
30 июл 15, 01:58    [17953024]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7378
voter,

Еще есть Trial, который работает пол-года. Потом детач/аттач и пошли по новой :)
30 июл 15, 02:09    [17953033]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
voter
Member

Откуда:
Сообщений: 21
Relic Hunter, триал - это как пробный брак - всегда притягательно... %-)
30 июл 15, 02:26    [17953040]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
voter
alexeyvg
Можно разбивать систему на много баз.

... а что практика говорит - стоит везде писать база.таблица или проще умощнить программу до небесплатной версии и все видеть в одной базе? Что посоветуете неофиту?
Проще хранить в одной базе.

Разделение, распределённые системы всё таки сложнее в разработке и администрировании.
voter
... зато сразу узкие места видно... да и не студент я уже давно, изучение растет из реальной потребности...
Если чисто поизучать, то Developer или Trial, для коммерческих разработок Developer тоже подходит, ну а для эксплуатации можно просить руководство купить обычную версию.
30 июл 15, 03:16    [17953055]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Не совсем понятно, зачем для изучения необходимо оперировать такими объемами данных.
30 июл 15, 11:38    [17954047]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
voter
Планировал накапливать статистику, а также агрегировать ее с сохранением в этой же базе...


17473098
30 июл 15, 11:45    [17954084]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
voter
Гавриленко Сергей Алексеевич, почитаю, спасибо...


но что-то в этом есть, если планируется использовать экспрессы в дальнейшем, то лучше сразу на нем экспериментировать, нарываться на ограничения и решать интересные задачи, которые на взрослых версиях не возникают.
30 июл 15, 11:46    [17954086]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
komrad
Member

Откуда:
Сообщений: 5260
voter

Поделитесь мыслями, плииз...


если действительно тестируете, то лейте в мастер - у него ограничения нет, как выяснил тут недавно o_o
30 июл 15, 12:47    [17954532]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
komrad,

у меня вообще какая-то новая дикая идея по этому поводу закралась.
недавно кто-то выполз на форум с переименованным мастером от 2000-ого
и оказалось, что мастер, хоть и переименован, все равно мастер,
т.е. например он не апгрэйдится как остальные базы при переезде на сервер старшей версии.
так может это, он и в смысле проверки объема будет оставаться мастером?
надо бы проверить...
я только не совсем понимаю, как это его так переименовали.
остановить сервер, скопировать мастер, переименовать файлы и аттачить их под новым именем?
30 июл 15, 12:55    [17954591]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o
komrad,

у меня вообще какая-то новая дикая идея по этому поводу закралась.
недавно кто-то выполз на форум с переименованным мастером от 2000-ого
и оказалось, что мастер, хоть и переименован, все равно мастер,
т.е. например он не апгрэйдится как остальные базы при переезде на сервер старшей версии.
так может это, он и в смысле проверки объема будет оставаться мастером?
надо бы проверить...
я только не совсем понимаю, как это его так переименовали.
остановить сервер, скопировать мастер, переименовать файлы и аттачить их под новым именем?


обана!
А если бекапнуть мастер и рядом ресторнуть его с другим именем останется мастером?

надо бы и это исследование описать в той ветке
30 июл 15, 12:59    [17954619]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
Winnipuh,

буду переименованием.
что-то не отресторился.
у меня Экспресс 2014, а ресторю мастер от 2008 R2 девелопер.
ну или надо 2008 R2 Экспресс доставить

Processed 496 pages for database 'master1', file 'master' on file 1.
Processed 3 pages for database 'master1', file 'mastlog' on file 1.
Converting database 'master1' from version 661 to the current version 782.
Database 'master1' running the upgrade step from version 661 to version 668.
Database 'master1' running the upgrade step from version 668 to version 669.
Database 'master1' running the upgrade step from version 669 to version 670.
Database 'master1' running the upgrade step from version 670 to version 671.
Database 'master1' running the upgrade step from version 671 to version 672.
Database 'master1' running the upgrade step from version 672 to version 673.
Database 'master1' running the upgrade step from version 673 to version 674.
Database 'master1' running the upgrade step from version 674 to version 675.
Database 'master1' running the upgrade step from version 675 to version 676.
Database 'master1' running the upgrade step from version 676 to version 677.
Database 'master1' running the upgrade step from version 677 to version 679.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Msg 5570, Level 23, State 3, Line 1
FILESTREAM Failed to find the garbage collection table.

30 июл 15, 13:13    [17954704]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
не, не дало.
на 2008-ом Экспрессе мастер восстановился, все ок, но:
Msg 1827, Level 16, State 2, Line 1
CREATE DATABASE or ALTER DATABASE failed because the resulting cumulative database size would exceed your licensed limit of 4096 MB per database
.
30 июл 15, 13:46    [17954948]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
последняя попытка была восстановить уже увеличенный до нужных размеров мастер.
т.к. он ПОТОМ, после восстановления/аттача, базу уже за мастер не считает.
а вот когда восстанавливает, что-то он там проверяет, раз это "мастер".
ну так при ресторе он СНАЧАЛА размер проверяет, и только потом в содержимом копается.
т.е. снова неудача:
Msg 1827, Level 16, State 4, Line 1
CREATE DATABASE or ALTER DATABASE failed because the resulting cumulative database size would exceed your licensed limit of 4096 MB per database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.


все. фотнан идей иссяк
30 июл 15, 14:40    [17955311]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
komrad
Member

Откуда:
Сообщений: 5260
o-o
komrad,

у меня вообще какая-то новая дикая идея по этому поводу закралась.
недавно кто-то выполз на форум с переименованным мастером от 2000-ого
и оказалось, что мастер, хоть и переименован, все равно мастер,
т.е. например он не апгрэйдится как остальные базы при переезде на сервер старшей версии.
так может это, он и в смысле проверки объема будет оставаться мастером?
надо бы проверить...
я только не совсем понимаю, как это его так переименовали.
остановить сервер, скопировать мастер, переименовать файлы и аттачить их под новым именем?


;) нда, красивая идея была

Что касается мастера, то у меня случай был: пришлось восстанавливать мастер из бекапа, т.к. после перезагрузки сервера боевой master.dat оказался нулевого размера и сиквел не поднимался.
В итоге восстановил бекап на соседний сиквел в базу с произвольным названием (база2). И перед тем как файлики забрать и подложить вместо поврежденных, решил поселектить из системных таблиц в базе2.
На этом и обломался :) Сиквел упорно показывал данные из своего мастера, а не из базы2.

Удивился я тогда...
30 июл 15, 14:48    [17955384]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Можно свои 5 копеек...

IP_Seccode	nvarchar(4)	-> varchar(4) или сделать справочник отдельный с identity smallint
IP_Price	money		-> smallmoney
IP_Amount	int		-> объемы посчитайте предельные, может smallint
IP_Date		date		-> представить как одно поле smalldatetime
IP_Time		time(7)		->
IP_Number	int


что мешает таблицу ужать... по размеру существенно меньше станет
30 июл 15, 15:17    [17955603]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
AlanDenton
Можно свои 5 копеек...

IP_Seccode	nvarchar(4)	-> varchar(4) или сделать справочник отдельный с identity smallint
IP_Price	money		-> smallmoney
IP_Amount	int		-> объемы посчитайте предельные, может smallint
IP_Date		date		-> представить как одно поле smalldatetime
IP_Time		time(7)		->
IP_Number	int


что мешает таблицу ужать... по размеру существенно меньше станет

так он вроде про это и написал в первом посте:
voter
Из того что вижу - поле IP_Seccode могу вынести в отдельный справочник, заменив тип данных на SMALLINT... аналогично IP_Date могу заменить на SMALLINT... планировал делать это позднее

или вы про data compression?
его в Экспрессе нет
30 июл 15, 15:26    [17955679]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Имелось ввиду не "планировать", а сделать и сравнить сколько занимает места. Ведь мы же не знаем какие туда данные заливаются. Может типы данных избыточные и тд и тп.
30 июл 15, 15:35    [17955758]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
komrad
пришлось восстанавливать мастер из бекапа, т.к. после перезагрузки сервера боевой master.dat оказался нулевого размера и сиквел не поднимался.
В итоге восстановил бекап на соседний сиквел в базу с произвольным названием (база2). И перед тем как файлики забрать и подложить вместо поврежденных, решил поселектить из системных таблиц в базе2.
На этом и обломался :) Сиквел упорно показывал данные из своего мастера, а не из базы2.

ужас, как интересно.
действительно, он другой(восстановленный) мастер иногда путает со своим.
т.е. я беру мастер 2008-ого экспресса (это латинский экземпляр)
бэкап/рестор его на греческий экспресс под именем master_latin.
теперь делаю селект из ЕГО (master_latin) sys.databases,
а отдает он мне базы греческого экземпляра, хоть пиши ему базу насильно, хоть контекст меняй.
но при этом база знает, что она master_latin, и что коллэйшен у ней латинский.
а вот линкеды мне показывает снова от греческого экземпляра.
непонятно только, какой из этого всего можно извлечь прок, но вообще ценно, да.
надо было с пермишенами отресторить, выдать права в том мастере и посмотреть,
в каком из них проверять будет.
а то вдруг случайно можно лезть в основной мастер, не имея на него прав,
делая запросы к мастеру-подсадной утке, где есть все права

К сообщению приложен файл. Размер - 126Kb
30 июл 15, 15:58    [17955956]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
komrad
o-o
komrad,

у меня вообще какая-то новая дикая идея по этому поводу закралась.
недавно кто-то выполз на форум с переименованным мастером от 2000-ого
и оказалось, что мастер, хоть и переименован, все равно мастер,
т.е. например он не апгрэйдится как остальные базы при переезде на сервер старшей версии.
так может это, он и в смысле проверки объема будет оставаться мастером?
надо бы проверить...
я только не совсем понимаю, как это его так переименовали.
остановить сервер, скопировать мастер, переименовать файлы и аттачить их под новым именем?


;) нда, красивая идея была

Что касается мастера, то у меня случай был: пришлось восстанавливать мастер из бекапа, т.к. после перезагрузки сервера боевой master.dat оказался нулевого размера и сиквел не поднимался.
В итоге восстановил бекап на соседний сиквел в базу с произвольным названием (база2). И перед тем как файлики забрать и подложить вместо поврежденных, решил поселектить из системных таблиц в базе2.
На этом и обломался :) Сиквел упорно показывал данные из своего мастера, а не из базы2.

Удивился я тогда...


ты то ладно, а SQL Server не удивился файлу master.dat?
30 июл 15, 16:29    [17956211]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
komrad
Удивился я тогда...

до меня дошло. ничего удивительного, мы этим самым пользуемся каждый день.
если пишем просто select * from databases, то такой таблицы нет, он ищет в дефолтной схеме юзера или в dbo,
было бы -- выдал бы из *данной* базы, но нету.
приходится указывать sys.
ну а sys отправляет в базу мастер, т.к. он считает, что такая схема только там.
ведь никто не может создать sys ни в какой другой базе:
Msg 2760, Level 16, State 1, Line 1
The specified schema name "sys" either does not exist or you do not have permission to use it.
Msg 2759, Level 16, State 0, Line 1
CREATE SCHEMA failed due to previous errors.

так что просто идет игнор того, что за база явно указана.
ну мы же так и ходим в мастер из любой базы, не указывая мастер.
и без разницы в контексте какой базы мы находимся.
и без разницы, если указать явно имя любой базы.

извиняюсь за закакивание чужой темы
30 июл 15, 16:29    [17956214]     Ответить | Цитировать Сообщить модератору
 Re: Экономия размера базы  [new]
o-o
Guest
Winnipuh
ты то ладно, а SQL Server не удивился файлу master.dat?

а что, он еще и против переименования экстеншенов файлам системных баз?
надо переименовать!
30 июл 15, 16:33    [17956242]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить